摘要:指針指針指針重要的時(shí)期說(shuō)三遍由于對(duì)象類型為指針引用在變量復(fù)制方面,基本類型和引用類型也有所不同。在瀏覽器中,全局執(zhí)行環(huán)境被認(rèn)為是對(duì)象。
javascript---Symbol類型, 引用類型, 作用域
javascript的引用類型, 即對(duì)象類型是我們最常用的的類型, 其中有許多讓我們需要注意的地方, 最新的 , ES6 的推出, 使得對(duì)象類型的屬性名不僅僅可以是字符串類型,還可是Simbol 類型--(^_^現(xiàn)在有兩種類型了哦)這里奉上傳送門ES6 阮一峰Symbol 值通過Symbol函數(shù)生成。這就是說(shuō),對(duì)象的屬性名現(xiàn)在可以有兩種類型,一種是原來(lái)就有的字符串,另一種就是新增的 Symbol 類型。凡是屬性名屬于 Symbol 類型,就都是獨(dú)一無(wú)二的,可以保證不會(huì)與其他屬性名產(chǎn)生沖突。
Smbol類型
let mySymbol = Symbol(); // 第一種寫法 let a = {}; a[mySymbol] = "Hello!"; // 第二種寫法 let a = { [mySymbol] = "Hello!"; }; // 第三種寫法 let a = {}; Object.defineProperty(a, mySymbol, { value: "Hello!" }); // 以上寫法都得到同樣結(jié)果 a[mySymbol] // "Hello!"
引用類型
引用類型(對(duì)象類型)是js主要類行,他的用法類似于 c 語(yǔ)言中的指針
js基本類型和引用類型存儲(chǔ)于兩個(gè)地方, 基本類型值指的是那些保存在棧內(nèi)存中的簡(jiǎn)單數(shù)據(jù)段,即這種值完全保存在內(nèi)存中的一個(gè)位置 。而引用類型值則是指那些保存在堆內(nèi)存中的對(duì)象,意思是變量中保存的實(shí)際上只是一個(gè)指針,這個(gè)指針指向內(nèi)存中的另一個(gè)位置,該位置保存對(duì)象。
ps. 指針指針指針!!! (^-^ 重要的時(shí)期說(shuō)三遍)
由于對(duì)象類型為指針引用, 在變量復(fù)制方面,基本類型和引用類型也有所不同?;绢愋蛷?fù)制的是值本身,而引用類型復(fù)制的是地址
let box = "Lee"; //在棧內(nèi)存生成一個(gè) box "Lee" let box2 = box; //在棧內(nèi)存再生成一個(gè) box2 "Lee"
let box = new Object(); //創(chuàng)建一個(gè)引用類型 box.name = "Lee"; //新增一個(gè)屬性 let box2 = box; //把引用地址賦值給 box2
ps. 復(fù)制對(duì)象的時(shí)候要注意你的復(fù)制需求, 到底需要潛復(fù)制還是深復(fù)制
函數(shù)參數(shù)
對(duì)于函數(shù)參數(shù), 如果是基本類型則直接按指?jìng)鬟f, 而如果是引用類型則傳遞的是引用地址--(^_^指針)
執(zhí)行環(huán)境及作用域
執(zhí)行環(huán)境是 JavaScript 中最為重要的一個(gè)概念。執(zhí)行環(huán)境定義了變量或函數(shù)有權(quán)訪問的其他數(shù)據(jù),決定了它們各自的行為。
全局執(zhí)行環(huán)境是最外圍的執(zhí)行環(huán)境。在 Web 瀏覽器中,全局執(zhí)行環(huán)境被認(rèn)為是 window對(duì)象。因此所有的全局變量和函數(shù)都是作為 window 對(duì)象的屬性和方法創(chuàng)建的。
PS:當(dāng)執(zhí)行環(huán)境中的所有代碼執(zhí)行完畢后,該環(huán)境被銷毀,保存在其中的所有變量和函數(shù)定義也隨之銷毀。如果是全局環(huán)境下,需要程序執(zhí)行完畢,或者網(wǎng)頁(yè)被關(guān)閉才會(huì)銷毀。
PS:每個(gè)執(zhí)行環(huán)境都有一個(gè)與之關(guān)聯(lián)的變量對(duì)象,就好比全局的 window 可以調(diào)用變量和屬性一樣。局部的環(huán)境也有一個(gè)類似 window 的變量對(duì)象,環(huán)境中定義的所有變量和函數(shù)都保存在這個(gè)對(duì)象中。(我們無(wú)法訪問這個(gè)變量對(duì)象,但解析器會(huì)處理數(shù)據(jù)時(shí)后臺(tái)使用它)
PS:每個(gè)函數(shù)被調(diào)用時(shí)都會(huì)創(chuàng)建自己的執(zhí)行環(huán)境。當(dāng)執(zhí)行到這個(gè)函數(shù)時(shí),函數(shù)的環(huán)境就會(huì)被推到環(huán)境棧中去執(zhí)行,而執(zhí)行后又在環(huán)境棧中彈出(退出),把控制權(quán)交給上一級(jí)的執(zhí)行環(huán)境。
PS:當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),就會(huì)形成一種叫做作用域鏈的東西。它的用途是保證對(duì)執(zhí)行環(huán)境中有訪問權(quán)限的變量和函數(shù)進(jìn)行有序訪問。作用域鏈的前端,就是執(zhí)行環(huán)境的變量對(duì)象
作用域
javascript設(shè)計(jì)之初并沒有塊級(jí)作用域, 而只有函數(shù)作用域(^_^是不是有點(diǎn)反人類)
所以給程序員帶來(lái)了不便,不過可以通過立即執(zhí)行匿名函數(shù)來(lái)模仿塊級(jí)作用域
(function () { var name = "Iris"; })()
ES6: 沒有塊級(jí)作用域的語(yǔ)音一切都要?dú)w罪于 var 關(guān)鍵字, 于是 ES6 推出了新的關(guān)鍵字 let const 現(xiàn)在官方推薦所有的 var 關(guān)鍵字都可以用 let 代替, let cost 將存在塊級(jí)作用域功能 具體他們的不同可以參考鏈接描述
(function(){ if (4) { var name = "Iris"; } console.log(name);//Iris if (5) { let age = "23"; } console.log(age);//age is not defined })()
ps. name在代碼塊外部是不可見的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/107195.html
摘要:通常,它做為一個(gè)偏功能性的標(biāo)記來(lái)表示,在全劇中它是唯一的。并且使用來(lái)生成,會(huì)在存入當(dāng)前全局上下文中一個(gè)結(jié)構(gòu)中,我們稱它為顧名思義,它是全局的,所以使用時(shí)我們需要謹(jǐn)慎,尤其是在大型項(xiàng)目中。 ES6中基礎(chǔ)類型增加到了7種,比上一個(gè)版本多了一個(gè)Symbol,貌似出現(xiàn)了很長(zhǎng)時(shí)間,但卻因沒有使用場(chǎng)景,一直當(dāng)作一個(gè)概念層來(lái)理解它,我想,用它的最好的方式,還是要主動(dòng)的去深入了解它吧,所以我從基礎(chǔ)部分...
摘要:使用聲明的變量會(huì)動(dòng)被添加到最近的環(huán)境中查詢標(biāo)識(shí)符,現(xiàn)在作用域鏈的最前端開始搜索,逐步向上級(jí)查詢,直到找到匹配的標(biāo)識(shí)符,在變量查詢中,訪問局部變量要比全局變量更快,因?yàn)椴恍枰蛏纤阉髯饔糜颉? 基本類型和引用類型的值 基本類型值指的是簡(jiǎn)單的數(shù)據(jù)段;引用類型值指那些可能由多個(gè)值構(gòu)成的對(duì)象。不能給基本類型添加屬性,可以給引用類型值動(dòng)態(tài)的添加屬性。 基本類型按值訪問,存放在棧內(nèi)存中。引用類型按引...
摘要:作用域鏈中的下一個(gè)變量對(duì)象來(lái)自包含外部環(huán)境,而再下一個(gè)變量對(duì)象則來(lái)自下一個(gè)包含環(huán)境。這樣,一直延續(xù)到全局執(zhí)行環(huán)境全局執(zhí)行環(huán)境的變量對(duì)象始終都是作用域鏈中的最后一個(gè)對(duì)象標(biāo)識(shí)符解析沿作用域鏈一級(jí)一級(jí)搜索標(biāo)識(shí)符。 一、寫在前面 最近研究了創(chuàng)建Android虛擬機(jī)、vscode結(jié)合weex開發(fā)Android APP、Vmware裝MAC虛擬機(jī)的事,看的內(nèi)容不夠多,接下來(lái)加油 二、變量、作用域和...
摘要:全局變量是最外圍的一個(gè)執(zhí)行環(huán)境,代碼在環(huán)境中執(zhí)行,會(huì)創(chuàng)建一個(gè)作用域鏈,用途是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問所有變量和函數(shù)的有序訪問。作用域鏈中最后一個(gè)對(duì)象始終是全局執(zhí)行環(huán)境。內(nèi)部環(huán)境可以通過作用域鏈訪問所有的外部環(huán)境,外部則不能訪問內(nèi)部。 1、基本類型和引用類型的值 * 基本類型 : 指的是簡(jiǎn)單的數(shù)據(jù)段,五種基本類型是按值訪問的,可以直接操作保存在變量中實(shí)際的值。 * 引用類型 : 指那些可能...
閱讀 2670·2021-11-15 11:38
閱讀 2982·2021-11-02 14:44
閱讀 3937·2021-09-26 10:13
閱讀 3171·2021-08-13 15:02
閱讀 856·2019-08-30 15:56
閱讀 1633·2019-08-30 15:53
閱讀 2407·2019-08-30 13:01
閱讀 3297·2019-08-29 12:57