01作用域与作用域链

发布时间 2023-11-12 22:19:54作者: Jackie-Song

1.作用域 

学习目标:了解作用域对程序执行的影响以及作用域链的查找机制,使用闭包函数创建隔离作用域避免全局变量污染

作用域规定了变量能够被访问的范围,离开了这个范围变量便不能被访问

作用域分为:

局部作用域

  函数作用域 :在函数内部声明的变量只能在函数内部被访问。外部无法直接访问

  总结:函数内部声明的变量。在函数外部无法访问

     函数的参数也是函数内部的局部变量

     不同函数内部声明的变量无法相互访问

     函数执行完毕后,函数内部的变量实际被清空了

  块作用域:在JS中 被 {}包围的,代码块内部声明的变量外部将有可能无法被访问

  总结:for 、if 有块作用域 

    let 声明的产生块作用域 var不会产生块作用域

    不同代码块之间无法相互访问

全局作用域

    script 标签和js文件的最外层就是全局作用域 

    window对象动态添加的属性默认也是全局的

    函数中未使用任何关键词声明的变量为全局变量

2.作用域链

  作用域链的本质是底层的变量查找机制

  在函数执行时,会优先找到当前函数作用域中查找变量

  如果当前作用域查不到会依次查看父级作用域直到全局作用域

  总结:嵌套关系的作用域串联起来形成了作用域链

  子作用域链能够访问父作用域,父级作用域链无法访问子作用域链的变量、