Javascript作用域 (局部作用域和全局作用域) 詳細介紹
作用域是當(dāng)前的執(zhí)行上下文,值和表達式在其中“可見”或可被訪問。
常見的作用域為:
全局作用域:腳本模式運行所有代碼的默認作用域
函數(shù)作用域:由函數(shù)創(chuàng)建的作用域
局部作用域:用對象{}包著(一個代碼塊)創(chuàng)建出來的作用域
在
了解作用域之前先看一下全局變量和局部變量
-
全局變量
1、在全局作用域下聲明的變量叫做 全局變量(在函數(shù)外部定義的變量)2、全局變量在全局(代碼的任何位置)下都可以使用;全局作用域中無法訪問到局部作用域中的變量。
以下我們用var創(chuàng)建的就是全局變量:
<script>
var value = 66;
function method(){
console.log(value);
}
method();
console.log(value);
</script>
全局變量會提升但并不會賦值:所以 在創(chuàng)建之前l(fā)og是undefined 的億點小知識:變量提升和上文提到觸發(fā)時間有關(guān)。我們知道,var 和 function 聲明的變量可以在聲明前訪問,這就是因為變量提升的緣故。
<script>
console.log(value); // undefined
var value = 66;
console.log(value); // 66
</script>
-
局部變量
1、在局部作用域下聲明的變量叫做局部變量(在函數(shù)內(nèi)部定義的變量)2、局部變量只能在函數(shù)內(nèi)部使用,在局部作用域中可以訪問到全局變量。
在函數(shù)的內(nèi)部創(chuàng)建變量也是局部變量:
<script>
function method(){
var value = 66;
console.log(value); // 66
}
method();
console.log(value); //value is not defined
</script>
全局作用域和局部作用域的區(qū)別
- 全局作用域
全局作用域中的變量稱為全局變量,可以在任何作用域內(nèi)訪問。有兩種全局變量:
1.全局聲明變量是普通變量,在最頂級由 const、let 和 class 聲明的變量。
2.全局對象是存儲在全局對象中的屬性億點小知識:所有創(chuàng)建的變量都會作為 window 對象的屬性保存
<script>
var value = 66; // 在整個全局都可以獲取到 value
function method(){
console.log(value); // 全局方法內(nèi)部也可以獲取到 value
}
method();
</script>
- 局部作用域
作用域?qū)ψ兞縼碚f,可以簡單理解為程序能夠訪問到變量的范圍,超過作用域的就無法訪問。
{
// 外面這個 a 作用域,可以訪問變量 a
const a = 0;
console.log(a); // 0
{
// 里面這個 b 作用域,可以訪問 a、b
const b = 1;
console.log(a); // 0
console.log(b); // 1
}
}
// 最外面的作用域 不能訪問 a,b
console.log(a); // 報錯:Uncaught ReferenceError: a is not defined
- 函數(shù)作用域
在函數(shù)內(nèi)部定義的變量,就是局部作用域。函數(shù)作用域內(nèi),對外是封閉的,從外層的作用域無法直接訪問函數(shù)內(nèi)部的作用域
function method(){
let value = '內(nèi)容';
}
console.log(value ) //報錯:ReferenceError:value is not defined
文章來源:http://www.zghlxwxcb.cn/news/detail-475859.html
以上就是局部作用域和全局作用域感謝大家的閱讀
如碰到其他的問題 可以私下我 一起探討學(xué)習(xí)
如果對你有所幫助還請 點贊
收藏謝謝~!
關(guān)注收藏博客 作者會持續(xù)更新…文章來源地址http://www.zghlxwxcb.cn/news/detail-475859.html
到了這里,關(guān)于Javascript作用域 (局部作用域和全局作用域) 詳細介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!