Javascript作用域(局部和全局作用域)詳細(xì)介紹
Javascript作用域 (局部作用域和全局作用域) 詳細(xì)介紹
作用域是當(dāng)前的執(zhí)行上下文,值和表達(dá)式在其中“可見”或可被訪問(wèn)。
常見的作用域?yàn)椋?br />全局作用域:腳本模式運(yùn)行所有代碼的默認(rèn)作用域
函數(shù)作用域:由函數(shù)創(chuàng)建的作用域
局部作用域:用對(duì)象{}包著(一個(gè)代碼塊)創(chuàng)建出來(lái)的作用域
在了解作用域之前先看一下全局變量和局部變量
全局變量
1、在全局作用域下聲明的變量叫做 全局變量(在函數(shù)外部定義的變量)2、全局變量在全局(代碼的任何位置)下都可以使用;全局作用域中無(wú)法訪問(wèn)到局部作用域中的變量。
以下我們用var創(chuàng)建的就是全局變量:
<script> var value = 66; function method(){ console.log(value); } method(); console.log(value); </script>
全局變量會(huì)提升但并不會(huì)賦值:所以 在創(chuàng)建之前l(fā)og是undefined 的億點(diǎn)小知識(shí):變量提升和上文提到觸發(fā)時(shí)間有關(guān)。我們知道,var 和 function 聲明的變量可以在聲明前訪問(wèn),這就是因?yàn)樽兞刻嵘木壒省?/code>
<script> console.log(value); // undefined var value = 66; console.log(value); // 66 </script>
局部變量
1、在局部作用域下聲明的變量叫做局部變量(在函數(shù)內(nèi)部定義的變量)2、局部變量只能在函數(shù)內(nèi)部使用,在局部作用域中可以訪問(wèn)到全局變量。
在函數(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)訪問(wèn)。有兩種全局變量:
1.全局聲明變量是普通變量,在最頂級(jí)由 const、let 和 class 聲明的變量。
2.全局對(duì)象是存儲(chǔ)在全局對(duì)象中的屬性億點(diǎn)小知識(shí):所有創(chuàng)建的變量都會(huì)作為 window 對(duì)象的屬性保存
<script> var value = 66; // 在整個(gè)全局都可以獲取到 value function method(){ console.log(value); // 全局方法內(nèi)部也可以獲取到 value } method(); </script>
- 局部作用域
作用域?qū)ψ兞縼?lái)說(shuō),可以簡(jiǎn)單理解為程序能夠訪問(wèn)到變量的范圍,超過(guò)作用域的就無(wú)法訪問(wèn)。
{ // 外面這個(gè) a 作用域,可以訪問(wèn)變量 a const a = 0; console.log(a); // 0 { // 里面這個(gè) b 作用域,可以訪問(wèn) a、b const b = 1; console.log(a); // 0 console.log(b); // 1 } } // 最外面的作用域 不能訪問(wèn) a,b console.log(a); // 報(bào)錯(cuò):Uncaught ReferenceError: a is not defined
- 函數(shù)作用域
在函數(shù)內(nèi)部定義的變量,就是局部作用域。函數(shù)作用域內(nèi),對(duì)外是封閉的,從外層的作用域無(wú)法直接訪問(wèn)函數(shù)內(nèi)部的作用域
function method(){ let value = '內(nèi)容'; } console.log(value ) //報(bào)錯(cuò):ReferenceError:value is not defined
以上就是Javascript作用域 (局部和全局作用域) 詳細(xì)介紹的詳細(xì)內(nèi)容,更多關(guān)于Javascript 作用域的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
web項(xiàng)目開發(fā)之JS函數(shù)防抖與節(jié)流示例代碼
這篇文章主要介紹了web項(xiàng)目開發(fā)之JS函數(shù)防抖與節(jié)流實(shí)現(xiàn)的示例代碼及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09JavaScript根據(jù)數(shù)據(jù)生成百分比圖和柱狀圖的實(shí)例代碼
這篇文章介紹了JavaScript根據(jù)數(shù)據(jù)生成百分比圖和柱狀圖的實(shí)例代碼,有需要的朋友可以參考一下2013-07-07彈出遮罩層后禁止?jié)L動(dòng)效果【實(shí)現(xiàn)代碼】
下面小編就為大家?guī)?lái)一篇彈出遮罩層后禁止?jié)L動(dòng)效果【實(shí)現(xiàn)代碼】。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-04-04js函數(shù)名與form表單元素同名沖突的問(wèn)題
本篇文章主要是對(duì)js函數(shù)名與form表單元素同名沖突的問(wèn)題進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03ExpressJS使用express-ws的實(shí)例詳解
這篇文章主要介紹了ExpressJS使用express-ws的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09js構(gòu)造函數(shù)constructor和原型prototype原理與用法實(shí)例分析
這篇文章主要介紹了js構(gòu)造函數(shù)constructor和原型prototype原理與用法,結(jié)合實(shí)例形式分析js構(gòu)造函數(shù)constructor和原型prototype基本原理、功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03Javascript實(shí)現(xiàn)Array和String互轉(zhuǎn)換的方法
這篇文章主要介紹了Javascript實(shí)現(xiàn)Array和String互轉(zhuǎn)換的方法,涉及JavaScript中toString方法與split方法的使用技巧,需要的朋友可以參考下2015-12-12