JavaScript作用域——执行顺序_优先级_面试题

1》先找本层(本作用域) ===> 逐级向外查找

#在内部console.log打印a,结果为20。因为先找本层的,如果本层有,则直接返回;

#如果本层没有,向外部逐级找。

2》优先级
由高到低: 变量> 函数> 参数> 提升

提升是什么?
所谓变量提升, 即函数任意地方声明变量都可以,就相当于是在顶部声明了(只是声明了而已,并不是赋值)

举个例子:
首先代码是从上往下执行的,如果不声明变量,直接打出a,肯定会报错!

如果在console.log(a)上面写出var a(不赋值),会显示undefined

如果在console.log(a)下面写出var a = 20;(并赋值),仍然显示undefined

那么这就是提升。也就是说,在12行以上的代码中并没有a,(代码从上往下执行),本应该报错,但却没有,而是弹出undefined。所以,由于在13行声明了a,那么在11行的位置,隐式的有var a;(没有赋值)。
但这种情况仅限于局部变量(局部变量才会提升),写window.a和直接写a都不行。
window.a :

a:

如果有实参5,和形参num,那么会打印出5,而不是undefined。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值