Web学习之JS总结

银角大王武Sir的博客地址

1.Javascript的作用域链

由于javascript没有块级作用域,而且每个函数作为一个作用域,如果出现嵌套函数,则就会出现作用域链

寻找顺序为根据作用域链从内向外寻找,如果内层没有就逐层向外找,如果找不到则报错

2.javascript的作用域链在执行之前已创建

示例一:

上述代码,在函数被调用之前的作用域链已经存在了

  • 全局作用域 -> func函数作用域-> inner函数作用域

示例二:

上述的代码和示例一的目的相同,也是强调在函数被调用之前作用域链已经存在

  • 全局作用域 -> func函数作用域-> inner函数作用域

不同的是,在执行 var ret = func();时,func作用域中的xm变量已经由'xm002'被重置为'xm003',之后在执行ret();时,只能找到'xm003'

示例三:

上述代码,在函数被执行之前已经创建了两条作用域

  • 全局作用域 -> bar函数作用域
  • 全局作用域 -> func函数作用域

当执行ret();时,ret指bar函数,而bar函数的作用域已经存在:全局作用域 -> bar函数作用域,所以执行时会根据已经存在的作用域去寻找

猜你喜欢

转载自www.cnblogs.com/it-q/p/9243056.html