作用域
Posted qqinhappyhappy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域相关的知识,希望对你有一定的参考价值。
作用域
- 变量作用域:一个变量的作用域就是代码中定义变量的区域。
- 全局变量:在全局中定义的变量拥有全局作用域
- 局部变量:在函数内部定义的变量为局部变量,具有局部作用域
局部变量的优先级高于全局变量,当全局变量与局部变量重名时,全局变量会被局部变量覆盖
var color='red'//声明一个全局变量
function fun(){
var color='yellow'//声明一个局部变量
console.log(color)
}
fun()//yellow
- 函数作用域:ES6之前由于JS中没有块级作用域,而是取代的使用了函数作用域。
- 在函数中声明的变量都贝贝提升至函数体的顶部,即为“声明提前”(发生在JS预编译阶段)
- 所有在函数中声明的变量在函数体中始终是可见的,这意味着变量在声明之前就可以使用它
function test(){ console.log(i)//undefined 表示定义但未赋值 for (var i = 0; i < 10; i++) { console.log(i)//0 1 2 3 4 5 6 7 8 9 } console.log(i)//10 } test() 虽然看似变量i是在for循环时才被定义,实际上由于变量提前变量i在函数顶部就已经被定义,所以在整个函数体中都以访问i
- 块级作用域:每一个花括号中的代码都有其对应的作用域,变量在声明它们的代码段之外不可见
以上是关于作用域的主要内容,如果未能解决你的问题,请参考以下文章