什么是作用域红且?
作用域就是一個變量在代碼中可以使用的范圍。
Javascript的作用域
- 用var定義的變量
當在一個函數(shù)中用var聲明一個變量蛋叼,那么這個變量的作用域就是這個函數(shù)內(nèi)晶密。
也就是這個變量只能在這個函數(shù)內(nèi)可以使用,函數(shù)外部不可以使用窍帝。
同樣,在這個函數(shù)內(nèi)定義的函數(shù)也可以使用這個變量诽偷。
- 不用var定義的變量
在函數(shù)內(nèi)不用var定義的變量的作用域?qū)⒉幌拗圃谶@個函數(shù)內(nèi)坤学。
Javascript將回溯作用域鏈,直到找到這個變量初次被定義的地方报慕。
如果回溯到window作用域都沒有找到深浮,這個變量將被賦予全局作用域。
函數(shù)作用域示例
函數(shù)內(nèi)可以訪問函數(shù)外變量
因為該函數(shù)在這個變量的作用域內(nèi)眠冈。
var message = 'hello';
var sayHello = function() {
console.log(message);
}
sayHello(); //logs 'hello'
console.log(message); //logs 'hello'
函數(shù)外不可以訪問函數(shù)內(nèi)變量
因為該變量的作用域只在函數(shù)內(nèi)飞苇。
var sayHello = function(){
var message = 'goodbye';
console.log(message)
}
sayHello(); //logs 'goodbye'
console.log(message); // error