JS-作用域

84 阅读2分钟

通常来说,一段代码中所用到的名字并不总是有效和可用的,而限定这名字的可用性的代码范围就是这个名字的作用域

作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突

全局作用域

全局有效

作于所有代码执行的环境(整个script标签内部)或者是一个单独的js文件

局部作用域

局部有效

作用于函数内的代码环境,就是局部作用域。因为跟函数有关系,也称为函数作用域

块级作用域

{ }内有效

块级作用域由{ }包括,if语句和for语句里面的{ }等

全局变量

函数外部let的变量

全局变量在任何区域都可以访问和修改

局部变量

函数内部let的变量

局部变量只能在当前函数内部访问和修改

块级变量

{ }内部的let变量

let定义的变量,只能在快作用域里访问,不能跨块访问,也不能跨函数访问

作用域链

  • 如果函数中还有函数,那么这个作用域中就又可以诞生一个作用域
  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称做作用域链

函数内部的变量,只能给内部使用,函数外面不能使用 嵌套的函数,里层嵌套的函数可以使用外层函数的变量,外层的函数无法使用里层函数的变量 如果函数内部或者块级作用域内部,变量没有声明,直接赋值,也当 全局变量 来看 函数内部的形参可以看作是局部变量