为了账号安全,请及时绑定邮箱和手机立即绑定

js变量提升

js变量提升

撒科打诨 2018-11-14 14:15:40
ES5中,JavaScript只能通过函数来创建词法作用域(不是动态作用域)词法作用域就是代码写完,作用域就已经构建好了,如下面的案例一案例一var num = 10;function test(){    console.log(num);}function test1(){    var num = 100;    test();}    test1(); // 10案例二中该怎么解释一定要执行test()才不会报错呢,不是应该像案例一那样在函数执行前就已经进行了变量提升了吗案例二console.log(a);function test() {     a = 1;}test(); // 必须执行才能打印undefined 否则报错 
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

案例二你可以这么理解:
//因提升所以test函数置顶
function test() {
a = 1;
}
//但是此时还没调用test,所以a还没赋值
console.log(a);//err

//接着才执行test(),此时a才赋值,但是该行为为赋值而不是声明;

test();//a为1


查看完整回答
反对 回复 2018-12-31
  • 1 回答
  • 0 关注
  • 384 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信