运行以下代码时出现 JavaScript 错误:
<!DOCTYPE html>
<meta charset="utf-8">
<title>Untitled Document</title>
<script>
var fn = function () {
//var aaa = 'AAA';
return function () {
alert(aaa);
};
}();
var foo2 = function () {
var aaa = 'BBB';
(function () {
alert(aaa); // 'BBB'
})();
fn(); // Error: Uncaught ReferenceError: aaa is not defined
}();
</script>
我想当fn
函数运行时,应该可以在foo2
函数中找到aaa
但是我得到了错误。为什么?
谢谢!
最佳答案
I think when fn function running, it should be able to find aaa in foo2 function.
不,不应该。 aaa
在 foo2
中声明为局部变量,在 fn
中不可访问。是什么让你有不同的想法?我所见过的编程语言都不会像那样。
如果您取消对行 //var aaa = 'AAA';
的注释,它将起作用,但是 fn
中的警报当然会说“AAA”而不是“BBB”。
关于javascript - 一个 JavaScript 语言问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4780804/