什么是作用域?
作用域就是一個變量在代碼中可以使用的范圍。
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