为什么悬停在Chrome调试器实际上修改变量,而不是评估表达式
Why does hovering in the Chrome debugger actually modify variables rather than evaluating an expression?
所以我有这个代码:
var a = 3;
debugger;
console.log(a += a > 2)
现在不管出于什么原因(在这种情况下发生了某种类型强制转换,我不太熟悉),布尔表达式与增量运算符结合将a增加1。
然而,当我在chrome调试器中悬停(a += a>3)时,它实际上会运行该操作。如果我把鼠标悬停在那部分上5次,它就会运行那个操作5次。而不是正常的运行时给出的输出4,我将得到8,只是因为我在它上面徘徊了五次。
为什么不只运行一次操作,然后检查这个奇异操作的结果值呢?如果我将代码块悬停1000次,它不应该只输出该代码块的结果,就好像它只运行一次一样吗?
现在,您已经暂停了针对该代码运行的VM。你暂停了时间,看到的是现在的状态。通过高亮显示您在该状态下执行的代码的操作,以查看它将如何计算。然后,因为这就是这段代码的作用,a成为了VM内执行的结果。只要您再次执行,就会多次执行此操作。然后在执行中向前迈进时,您刚刚暂停的相同状态被向前拉。
希望这是一个关于为什么系统是这样运行的直接答案。
至于为什么添加1,Johan关于true
被转换为1
的评论是正确的。这是JavaScript弱类型系统的一部分
相关文章:
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript-在一行中评估多个正则表达式
- 在JavaScript中评估复杂的数学表达式
- 我可以在对象上下文中评估表达式吗?
- Webpack:是否可以在编译时评估javascript表达式
- AngularJs针对多个条件评估表达式
- 评估JavaScript中给出布尔表达式的字符串
- 在 NodeJS repl 中逐个表达式地评估 Javascript 文件
- JS与C++表达式评估
- 条件表达式的评估
- JavaScript 评估,用于在某种隔离环境中的表达式
- Birt报告引擎.评估Javascript表达式时出错
- 正在评估AngularJS ng-show指令中的表达式
- 正在评估JavaScript代码中的Elisp表达式
- 正在Chrome中评估xpath表达式
- 如何评估JavaScript表达式
- 在winrt/xaml/c#应用程序中动态评估javascript表达式
- AngularJS在评估正则表达式ng模式时出现问题
- angular.js中的表达式评估
- Javascript / NodeJS 正则表达式评估在第三次尝试时失败