[英]Eval and function scope
以下代碼似乎有問題。 它使用eval
聲明一個函數,然后調用它-直到那時,一切都很好-並且再次調用它,但是,盡管該函數會出現錯誤。
var fn = function() {
return isTwo(2);
};
var check = function() {
eval("var isTwo = function(value) { return value == 2 }")
console.log(isTwo(2)); // returns true
console.log(fn()); // returns isTwo is not defined
}
check();
解開check
功能可以使事情正常,但似乎是錯誤的。 為什么在eval
內部使用eval
應該更改其行為?
var fn = function() {
return isTwo(2);
};
eval("var isTwo = function(value) { return value == 2 }")
console.log(isTwo(2)); // returns true
console.log(fn()); // returns true
因為eval
就像您用要評估的代碼替換了該行一樣。 因此, var isTwo = function(value) { return value == 2 }
定義了一個局部變量,其他函數無法訪問它。 它在外部塊中起作用的原因是因為它是一個全局變量,並且可以由其他函數訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.