2022-03-27

什么是作用域

作用域規(guī)定了當(dāng)前執(zhí)行代碼對(duì)變量的訪問(wèn)權(quán)限

作用域最大的作用就是變量隔離,不同作用域下的同名變量不會(huì)有沖突

全局作用域

1.最外層函數(shù)和最外層函數(shù)外面定義的變量擁有全局作用域

2.未定義直接賦值的變量自動(dòng)聲明擁有全局作用域

弊端:

污染全局命名空間,容易引起命名沖突

函數(shù)作用域

指聲明在函數(shù)內(nèi)部的變量,只在固定的代碼片段能夠訪問(wèn)到

塊級(jí)作用域

可以通過(guò)新增的let 、const聲明,塊級(jí)作用域在如下情況被創(chuàng)建

在一個(gè)函數(shù)內(nèi)部

在一個(gè)代碼塊(由一對(duì)花括號(hào)包裹)內(nèi)部

塊級(jí)作用域聲明的變量不會(huì)提升到代碼塊頂部

作用域鏈

自由變量

需要用到某個(gè)變量,但是在當(dāng)前作用域中沒(méi)有定義這個(gè)變量,這個(gè)變量稱為自由變量。

自由變量的值通過(guò)向父級(jí)作用查找得到

什么是作用域鏈

向父級(jí)作用域找,沒(méi)找到,再一層一層向上尋找,直到全局作用域。這一層一層的關(guān)系就是作用域鏈

查找某個(gè)自由變量,是要去創(chuàng)建這個(gè)函數(shù)的作用域取值,而不是調(diào)用。--靜態(tài)作用域

作用域與執(zhí)行上下文

JavaScript屬于解釋型語(yǔ)言,JavaScript的執(zhí)行分為:解釋和執(zhí)行兩個(gè)階段。

解釋階段

詞法分析

語(yǔ)法分析

作用域規(guī)則確定

執(zhí)行階段

創(chuàng)建執(zhí)行上下文

執(zhí)行函數(shù)代碼

垃圾回收

執(zhí)行上下文在運(yùn)行時(shí)確定,隨時(shí)可能改變;作用域在定義時(shí)就確定,并且不會(huì)改變

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [toc] 一.作用域 通常來(lái)說(shuō),一段程序代碼中所用到的名字并不總是有效和可用的,而限定這個(gè)名字的可用性的代碼范圍...
    Jason杰森閱讀 396評(píng)論 0 0
  • 最近我也是經(jīng)歷過(guò)面試別人和去面試的人了,總結(jié)幾個(gè)常被提及的面試問(wèn)題,做一下解答和備忘。 JavaScript 中 ...
    前端吳彥祖閱讀 330評(píng)論 0 0
  • 冰山:2022.1.30 1.事件:忙年 2.感受:累,乏,充實(shí),高興 (情緒如何轉(zhuǎn)化或使用) 3.想法: 一年一...
    可愛(ài)的小刺猬閱讀 388評(píng)論 0 0
  • 一道關(guān)于原型鏈的面試題 詳解JS函數(shù)柯里化 http://www.itdecent.cn/p/2975c25e4...
    iCodingShow閱讀 363評(píng)論 0 1
  • 一、React基本使用 1.安裝 react 包是核心,提供創(chuàng)建元素,組件等功能;react-dom 包提供DOM...
    大刀劈向鬼子閱讀 306評(píng)論 0 0

友情鏈接更多精彩內(nèi)容