JavaScript作用域

作用域

作用域就是定义变量的区域,即代码执行时,访问变量的权限。

作用域分词法作用域和动态作用域。

JavaScript采用的是词法作用域,即静态作用域。

 

词法作用域:在函数定义时,作用域已经确定了。

动态作用域:在函数调用时,作用域才确定。

例:

let p = 1

function a() {

  console.log(p)

}

function b() {

  let p = 2

  a()

}

b() // 1

注解:因为js采用的是词法作用域,执行 a 函数,先从a 函数内部查找是否有局部变量 p,如果没有,就根据书写的位置,查找上面一层的代码,也就是 p 等于 1,故打印1。

假设:假设js采用的是动态作用域,执行 a 函数,先从a 函数内部查找是否有局部变量 p,如果没有,就从调用 a 函数的作用域,也就是 b 函数内部查找 p 变量,就会打印2。

 

问:js采用词法作用域,什么语言会采用动态作用域?

bash

 

例:

let p = 1

function a () {

  let p = 2
  function b () {

    console.log(p)

  }
  b()

}

a()  // ??

 

以上是学习笔记总结。

学习链接:https://segmentfault.com/a/1190000008972987

 

posted @ 2020-07-09 17:10  _花小七  阅读(142)  评论(0编辑  收藏  举报