javascript 作用域
作用域指的是您有權(quán)訪問(wèn)的變量集合。
1. javascript 函數(shù)作用域
在 javascript 中有兩種作用域類型:
- 局部作用域
- 全局作用域
javascript 擁有函數(shù)作用域:每個(gè)函數(shù)創(chuàng)建一個(gè)新的作用域。
作用域決定了這些變量的可訪問(wèn)性(可見(jiàn)性)。
函數(shù)內(nèi)部定義的變量從函數(shù)外部是不可訪問(wèn)的(不可見(jiàn)的)。
2. 局部 javascript 變量
在 javascript 函數(shù)中聲明的變量,會(huì)成為函數(shù)的局部變量。
局部變量的作用域是局部的:只能在函數(shù)內(nèi)部訪問(wèn)它們。
范例
// 此處的代碼不能使用 carname 變量 function myfunction() { var carname = "porsche"; // 此處的代碼能使用 carname 變量 }
由于只能在函數(shù)內(nèi)部識(shí)別局部變量,因此能夠在不同函數(shù)中使用同名變量。
在函數(shù)開(kāi)始時(shí)會(huì)創(chuàng)建局部變量,在函數(shù)完成時(shí)會(huì)刪除它們。
3. 全局 javascript 變量
函數(shù)之外聲明的變量,會(huì)成為全局變量。
全局變量的作用域是全局的:網(wǎng)頁(yè)的所有腳本和函數(shù)都能夠訪問(wèn)它。
范例
var carname = " porsche"; // 此處的代碼能夠使用 carname 變量 function myfunction() { // 此處的代碼也能夠使用 carname 變量 }
4. javascript 變量
在 javascript 中,對(duì)象和函數(shù)也是變量。
作用域決定了從代碼不同部分對(duì)變量、對(duì)象和函數(shù)的可訪問(wèn)性。
5. 自動(dòng)全局
如果您為尚未聲明的變量賦值,此變量會(huì)自動(dòng)成為全局變量。
這段代碼將聲明一個(gè)全局變量 carname,即使在函數(shù)內(nèi)進(jìn)行了賦值。
范例
myfunction();
// 此處的代碼能夠使用 carname 變量
function myfunction() {
carname = "porsche";
}
6. 嚴(yán)格模式
所有現(xiàn)代瀏覽器都支持以“嚴(yán)格模式”運(yùn)行 javascript。
您將在本教程稍后的章節(jié)學(xué)習(xí)更多如何使用嚴(yán)格模式的知識(shí)。
在“嚴(yán)格模式”中不會(huì)自動(dòng)創(chuàng)建全局變量。
7. html 中的全局變量
通過(guò) javascript,全局作用域形成了完整的 javascript 環(huán)境。
在 html 中,全局作用域是 window。所有全局變量均屬于 window 對(duì)象。
范例
var carname = "porsche";
// 此處的代碼能夠使用 window.carname
8. 警告
除非有意為之,否則請(qǐng)勿創(chuàng)建全局變量。
您的全局變量(或函數(shù))能夠覆蓋 window 變量(或函數(shù))。
任何函數(shù),包括 window 對(duì)象,能夠覆蓋您的全局變量和函數(shù)。
9. javascript 變量的有效期
javascript 變量的有效期始于其被創(chuàng)建時(shí)。
局部變量會(huì)在函數(shù)完成時(shí)被刪除。
全局變量會(huì)在您關(guān)閉頁(yè)面是被刪除。
10. 函數(shù)參數(shù)
函數(shù)參數(shù)也是函數(shù)內(nèi)的局部變量。