關(guān)于JS變量和作用域詳解
ECMAScript 變量:
1.基本類型值(簡單數(shù)據(jù)段)
2.引用類型值(可能由過個(gè)值構(gòu)成的對(duì)象) → 保存在內(nèi)存中的對(duì)象
------
動(dòng)態(tài)屬性: 只能給引用型值動(dòng)態(tài)添加新屬性,以便將來使用。
------
復(fù)制變量值 :
基本類型值的復(fù)制 → 在變量對(duì)象上創(chuàng)建一個(gè)新值 → 復(fù)制給新變量(互不影響)
引用類型值的復(fù)制 → 將存儲(chǔ)在變量對(duì)象中的值復(fù)制到新變量分配空間中(復(fù)制的是一個(gè)指針,指向同一個(gè)對(duì)象,相互影響)
------
傳遞參數(shù):
ECMAScript中所有函數(shù)的參數(shù)都是按值傳遞 。
(函數(shù)外部的值復(fù)制給函數(shù)內(nèi)部的參數(shù)。
→ 可以把ECMA函數(shù)的參數(shù)想象成局部變量。)
原因解釋:
說法一:
函數(shù)參數(shù)是一種局部變量,在外部值傳遞給函數(shù)參數(shù),內(nèi)部外部互不影,引用傳遞復(fù)制的是地址,所以他內(nèi)務(wù)外部相互有影響。
說法二:對(duì)象角度(參數(shù)是一個(gè)對(duì)象 obj)
------
對(duì)象按值傳遞 → 參數(shù)對(duì)象和外部對(duì)象引用同一個(gè)對(duì)象 → 外部對(duì)象指向的對(duì)象在堆內(nèi)存中只有一個(gè),且是全局變量。
不要錯(cuò)認(rèn)為是在局部作用在修改的對(duì)象在全局作用域(外部)反映出來的結(jié)果 → 函數(shù)內(nèi)部的局部變量在函數(shù)執(zhí)行完會(huì)立即銷毀。
------
執(zhí)行環(huán)境(有時(shí)候也簡稱“環(huán)境”)及作用域
執(zhí)行環(huán)境定義了白嬢或函數(shù)有權(quán)訪問其他數(shù)據(jù)決定了他們各自的行為 → 每個(gè)執(zhí)行環(huán)境都有一個(gè)與之關(guān)聯(lián)的變量對(duì)象 → 環(huán)境中定義的所有變量和函數(shù)都保存在這個(gè)對(duì)象。
------
每個(gè)函數(shù)都有自己的執(zhí)行環(huán)境 → 當(dāng)執(zhí)行流進(jìn)入一個(gè)函數(shù)時(shí) → 函數(shù)環(huán)境會(huì)被推入一個(gè)環(huán)境棧中 → 在函數(shù)執(zhí)行后將其彈出 → 把控制權(quán)返回給之前的執(zhí)行環(huán)境
代碼在一個(gè)環(huán)境執(zhí)行中時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈(scope chain)
作用域鏈用途:保證對(duì)執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問。
作用域鏈的前端,始終都是當(dāng)前執(zhí)行的代碼所在環(huán)境的變量對(duì)象
------
內(nèi)部環(huán)境可以通過作用域鏈所有的外部環(huán)境,但是外部環(huán)境不能訪問內(nèi)部環(huán)境(環(huán)境的聯(lián)系是線性的,有次序的 → 向上搜索作用域鏈以查詢變量和函數(shù)名)
函數(shù)參數(shù)也被當(dāng)做變量來對(duì)待
------
延長作用域鏈:
有些語句可以在作用域的前端鏈臨時(shí)增加一個(gè)變量(變量在代碼執(zhí)行后移除)
1.try-catch語句的catch塊
2.with語句
------
Javas沒有塊級(jí)作用域
這里可以再簡單區(qū)分一下塊級(jí)作用域和函數(shù)作用域
以上這篇關(guān)于JS變量和作用域詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- JavaScript高級(jí)程序設(shè)計(jì)之變量與作用域
- JS中作用域以及變量范圍分析
- JavaScript變量作用域及內(nèi)存問題實(shí)例分析
- JS塊級(jí)作用域和私有變量實(shí)例分析
- JavaScript變量類型以及變量作用域詳解
- javascript 的變量、作用域和內(nèi)存問題
- JS變量及其作用域
- js 作用域和變量詳解
- JavaScript變量的作用域全解析
- JavaScript 變量、作用域及內(nèi)存
- JavaScript中的變量作用域介紹
- js變量、作用域及內(nèi)存詳解
- 深入解析JavaScript中的變量作用域
- Javascript變量作用域詳解
- JavaScript中變量的作用域詳解
相關(guān)文章
JavaScript中的動(dòng)態(tài)?import()用法示例解析
這篇文章主要為大家介紹了JavaScript中的動(dòng)態(tài)import()用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04webpack-url-loader 解決項(xiàng)目中圖片打包路徑問題
這篇文章主要介紹了webpack-url-loader 解決項(xiàng)目中圖片打包路徑問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02ES6中async函數(shù)與await表達(dá)式的基本用法舉例
async和await是我們進(jìn)行Promise時(shí)的一個(gè)語法糖,async/await為了讓我們書寫代碼時(shí)更加流暢,增強(qiáng)了代碼的可讀性,下面這篇文章主要給大家介紹了關(guān)于ES6中async函數(shù)與await表達(dá)式的基本用法,需要的朋友可以參考下2022-07-07javascript 操作cookies及正確使用cookies的屬性
在 JS(JavaScript) 操作cookies比較復(fù)雜,在 ASP 里面我們只需要知道 cookie 的名稱、cookie 的值就行了,而 JS 里面,我們面對(duì)的是 cookie 的字符串,你自己編寫這個(gè)字符串寫入客戶端,然后自己解析這個(gè)字符串。2009-10-10javascript獲取和判斷瀏覽器窗口、屏幕、網(wǎng)頁的高度、寬度等
這篇文章主要介紹了javascript獲取和判斷瀏覽器窗口、屏幕、網(wǎng)頁的高度、寬度等,需要的朋友可以參考下2014-05-05js實(shí)現(xiàn)酷炫倒計(jì)時(shí)動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)酷炫倒計(jì)時(shí)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07