Kha*_*ain 6 javascript angularjs
这是我的场景的一部分.当我在chrome中调试此代码时,第二个'if'中的语句不会被执行.但是当我在Firefox中调试它时,第二个'if'中的语句被执行.

angular.module('optionsExample', [])
.controller('ExampleController', ['$scope', function($scope) {
debugger;
if(true){
$scope.name = 'Foo';
}
if(false){
$scope.name = 'lol';
}
}]);
Run Code Online (Sandbox Code Playgroud)
Firefox版本:35.0.1 Chrome版本:41.0.2272.101 m
为什么会这样?
更新:
还在Firefox 36.0.4中测试过,同样的问题.
这可能是一个错误,也可能只是他们的设计方式。但这似乎与调试器如何处理它可以轻松评估的 if 语句条件以及使用的代码样式(K&R、Allman、1TBS 等)有关

可以设置断点的代码行被调试器标记为绿色,而不能设置断点的代码行则标记为灰色。
简而言之,调试器不会突出显示它可以轻松判断是否具有真/假条件的 if 语句行(甚至可能是其他控制语句行)。设置断点时,断点将放置在下一个可中断的代码行上。
对于使用 1TBS/OTBS 或 K&R 样式格式的块,调试器将突出显示 if 块中的第一个可中断行,而不是实际的 if 语句行。这给人一种错误的印象,即接下来将执行错误条件 if 语句内的代码。
对于使用 Allman 样式格式的块,调试器在单步执行时不会突出显示 if 语句或代码块的任何部分。如果您尝试在 if 语句上放置代码中断,它将跳过整个块并将断点放置在下一个可中断行上。
当 if 语句不使用调试器可以轻松读取为真/假的条件时,调试器将按预期运行。
演示进行测试
debugger;
var one = true;
var two = false;
//Allman Style
if(one)
{
console.log("Truth");
}
if(two)
{
console.log("false");
}
if(true)
{
console.log("Truth");
}
if(false)
{
console.log("false");
}
//1TBS/OTBS Style
if(one){
console.log("Truth");
}
if(two){
console.log("false");
}
if(true){
console.log("Truth");
}
if(false){
console.log("false");
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2971 次 |
| 最近记录: |