yucheng21 2017-03-08 04:40 采纳率: 0%
浏览 950

js中词法作用域和函数调用位置的疑惑

var a=3;
 function kk(){
 console.log(a)
 }
 var a=2;
 kk();//打印值为2

初学js,上面的代码我以前理解没问题,后来看了词法作用域后我就不能理解了。
我对词法作用域的理解是,你在编写代码的时候,作用域就定好了。
用上面代码解释我的想法:
执行kk()的时候,先查询kk自己局部变量有没有a值,没有的时候在全局变量里找;
这时以我对词法作用域理解,查找a全局变量的时候,只能**声明kk函数以上的地方找**,所以值应该是3。而**不应该在kk()调用位置**以上找,但是结果确实在调用位置上查询到a的变量为2。
是我对词法作用域的理解有偏差吗

  • 写回答

5条回答 默认 最新

  • hit、run 2017-03-08 04:59
    关注

    就近原则:下面的var a=2;
    在瀑布式加载时会替换之前的a值.

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制