请问以下代码执行后为什么会报错(a is not defined);

bbb();

function bbb () {

var a = 5;

aaa();//这样会报错:a is not defined

(function aaa(){    //写成这样就不会报错,为什么?

alert(a);

})();

}


function aaa () {

alert(a);

}


慕田峪8701529
浏览 2395回答 3
3回答

落叶1111

a的上下文环境在b函数中,alert(a)取得是全局的a,所以取不到

HOTLINE

作用域的问题吧在bbb的外面创建函数 alert (a) 此时的 a 指的是 window 上的 a  , 但是在window上并没有声明 a 所以 a is not defined;但是你在bbb内部自执行 aaa 方法 ,此时存在一个作用域链 , 在 aaa 方法里没有 a , 但是在他的外面 也就是 bbb有a 所以此时的a就是5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript