Chrome开发者工具奇怪的行为

时间:2018-04-04 15:35:08

标签: javascript google-chrome-devtools

我尝试在js中使用范围变量并使用chrome开发人员工具。我正在尝试访问闭包变量,如下所示:

"use strict"

var Dog = function(){                                                                   
  this.color = "brown";                                                             
  this.weight = "10";                                                               
} 

Dog.prototype.generateCode = function(){                                            
  var codeSeparator = "#";               
  var _this = this;

  return label();                                                                   
  function label(){
    debugger;                             
    return _this.color + _this.weight;                              
  }     
}       

var d = new Dog();                            
d.generateCode();

当我尝试访问变量codeSeparator时,我使用chrome开发人员工具收到错误,但Firefox就可以了。

另一方面,如果我在函数中使用变量,chrome似乎没问题:

  //...                                                        
  function label(){
    debugger;                             
    return _this.color + codeSeparator + _this.weight;                              
  }        

我不确定这是否是Chrome开发人员工具或我无法获得的JS概念的错误。

1 个答案:

答案 0 :(得分:0)

Chrome的V8具有名为Dead Code Elimination

的功能

如果您未在任何地方使用codeSeparator,V8可能会删除此代码。

参考:

  • 死代码消除(DCE) - 删除不影响程序结果的代码。

https://blog.ghaiklor.com/optimizations-tricks-in-v8-d284b6c8b183 https://chromium.googlesource.com/v8/v8/+/roll/src/compiler/dead-code-elimination.cc