我尝试在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概念的错误。
答案 0 :(得分:0)
Chrome的V8具有名为Dead Code Elimination
如果您未在任何地方使用codeSeparator
,V8可能会删除此代码。
参考:
https://blog.ghaiklor.com/optimizations-tricks-in-v8-d284b6c8b183 https://chromium.googlesource.com/v8/v8/+/roll/src/compiler/dead-code-elimination.cc