原文網址:JS--作用域--詳解/實體_IT利刃出鞘的博客-CSDN博客
簡介
本文用示例介紹JavaScript的作用域,
作用域有三類:全域作用域、函式作用域、塊作用域,
全域作用域
- 全域作用域在頁面打開時被創建,頁面關閉時被銷毀
- 撰寫在script標簽中的變數和函式,作用域為全域,在頁面的任意位置都可以訪問到
- 全域作用域中有全域物件window,代表一個瀏覽器視窗,由瀏覽器創建,可直接呼叫
let aa = 10;
var ab = 20;
function ac(){
console.log('ac')
}
let ad = function(){
console.log('ad')
}
console.log(window);
變數a, b,函式c和d都在全域作用域,

從上圖可以看到,var和function宣告的變數,可以在window上看到,但let宣告的卻看不到,原因如下:
ES5:頂層物件的屬性等價于全域變數,(敲黑板了啊)
ES6:var、function宣告的全域變數,依然是頂層物件的屬性;let、const、class宣告的全域變數不屬于頂層物件的屬性,也就是說ES6開始,全域變數和頂層物件的屬性開始分離、脫鉤,
函式作用域
函式內的宣告的變數和函式在該函式外訪問不到,
示例
function c(){
let a;
}
console.log(a);
結果
報錯:Uncaught ReferenceError: a is not defined
塊作用域
大括號以內的范圍是一個塊作用域,這個大括號可以是if、while、for之后的大括號,也可以是單獨一個大括號,
示例1:if的大括號
if(true){
let a = 2;
}
console.log(a);
結果
報錯: Uncaught ReferenceError: a is not defined
示例2:純大括號
{
let a = 2;
}
console.log(a);
結果
報錯: Uncaught ReferenceError: a is not defined
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/395137.html
標籤:其他
