詳解JavaScript 作用域
作用域是可訪問變量的集合。
JavaScript 作用域
在 JavaScript 中, 對象和函數(shù)同樣也是變量。
在 JavaScript 中, 作用域為可訪問變量,對象,函數(shù)的集合。
JavaScript 函數(shù)作用域: 作用域在函數(shù)內(nèi)修改。
JavaScript 局部作用域
變量在函數(shù)內(nèi)聲明,變量為局部作用域。
局部變量:只能在函數(shù)內(nèi)部訪問。
// 此處不能調(diào)用 carName 變量
function myFunction() {
var carName = "Volvo";
// 函數(shù)內(nèi)可調(diào)用 carName 變量
}
因為局部變量只作用于函數(shù)內(nèi),所以不同的函數(shù)可以使用相同名稱的變量。
局部變量在函數(shù)開始執(zhí)行時創(chuàng)建,函數(shù)執(zhí)行完后局部變量會自動銷毀。
JavaScript 全局變量
變量在函數(shù)外定義,即為全局變量。
全局變量有 全局作用域: 網(wǎng)頁中所有腳本和函數(shù)均可使用。
var carName = " Volvo";
// 此處可調(diào)用 carName 變量
function myFunction() {
// 函數(shù)內(nèi)可調(diào)用 carName 變量
}
如果變量在函數(shù)內(nèi)沒有聲明(沒有使用 var 關(guān)鍵字),該變量為全局變量。
以下實例中 carName 在函數(shù)內(nèi),但是為全局變量。
// 此處可調(diào)用 carName 變量
function myFunction() {
carName = "Volvo";
// 此處可調(diào)用 carName 變量
}
JavaScript 變量生命周期
JavaScript 變量生命周期在它聲明時初始化。
局部變量在函數(shù)執(zhí)行完畢后銷毀。
全局變量在頁面關(guān)閉后銷毀。
函數(shù)參數(shù)
函數(shù)參數(shù)只在函數(shù)內(nèi)起作用,是局部變量。
HTML 中的全局變量
在 HTML 中, 全局變量是 window 對象: 所有數(shù)據(jù)變量都屬于 window 對象。
//此處可使用 window.carName
function myFunction() {
carName = "Volvo";
}
你知道嗎?
你的全局變量,或者函數(shù),可以覆蓋 window 對象的變量或者函數(shù)。
局部變量,包括 window 對象可以覆蓋全局變量和函數(shù)。
補充
ES6 中的 let 關(guān)鍵字
let 允許你聲明一個作用域被限制在塊級中的變量、語句或者表達式。與var關(guān)鍵字不同的是,它聲明的變量只能是全局或者整個函數(shù)塊的。
let 語法:
let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];
let 聲明的變量只在其聲明的塊或子塊中可用,這一點,與 var 相似。二者之間最主要的區(qū)別在于 var 聲明的變量的作用域是整個封閉函數(shù)。
let 和 var 的區(qū)別代碼實例:
function varTest() {
var x = 1;
if (true) {
var x = 2; // 同樣的變量!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // 不同的變量
console.log(x); // 2
}
console.log(x); // 1
}
以上就是詳解JavaScript 作用域的詳細內(nèi)容,更多關(guān)于JavaScript 作用域的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
undefined==null引發(fā)的兩者區(qū)別與聯(lián)系
undefined==null引發(fā)的兩者區(qū)別與聯(lián)系2007-12-12
前端使用JS內(nèi)置Blob實現(xiàn)下載各種形式的文件實例
通過使用JavaScript我們可以很方便地實現(xiàn)文件的下載功能,這篇文章主要給大家介紹了關(guān)于前端使用JS內(nèi)置Blob實現(xiàn)下載各種形式文件的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-06-06
JS開發(fā)中基本數(shù)據(jù)類型具體有哪幾種
JS的數(shù)據(jù)類型包括基本數(shù)據(jù)類型、復雜數(shù)據(jù)類型和特殊數(shù)據(jù)類型,今天我們主要先講解一下基本數(shù)據(jù)類型。感興趣的朋友一起看看吧2017-10-10

