什么是作用域?
作用域就是一个变量在代码中可以使用的范围。
Javascript的作用域
- 用var定义的变量
当在一个函数中用var声明一个变量,那么这个变量的作用域就是这个函数内。
也就是这个变量只能在这个函数内可以使用,函数外部不可以使用。
同样,在这个函数内定义的函数也可以使用这个变量。
- 不用var定义的变量
在函数内不用var定义的变量的作用域将不限制在这个函数内。
Javascript将回溯作用域链,直到找到这个变量初次被定义的地方。
如果回溯到window作用域都没有找到,这个变量将被赋予全局作用域。
函数作用域示例
函数内可以访问函数外变量
因为该函数在这个变量的作用域内。
var message = 'hello';
var sayHello = function() {
console.log(message);
}
sayHello(); //logs 'hello'
console.log(message); //logs 'hello'
函数外不可以访问函数内变量
因为该变量的作用域只在函数内。
var sayHello = function(){
var message = 'goodbye';
console.log(message)
}
sayHello(); //logs 'goodbye'
console.log(message); // error