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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退