摘要:中有兩中數(shù)值類型基本數(shù)值類型和對象類型引用數(shù)據(jù)類型基本數(shù)據(jù)類型新增對象類型可變與不可變基本上數(shù)據(jù)類型是不可變的,我們不能給他添加屬性,即使添加了屬性也是無效的。基本上數(shù)據(jù)類型比較很簡單,常規(guī)思維可以理解基本數(shù)據(jù)類型對比,沒毛病,很好理解。
JavaScript中有兩中數(shù)值類型:基本數(shù)值類型和對象類型(引用數(shù)據(jù)類型)
基本數(shù)據(jù)類型:
Boolean undefined Null String Number Symbol // (ES6新增)
對象類型:
Function Object Array
可變與不可變
基本上數(shù)據(jù)類型是不可變的,我們不能給他添加屬性,即使添加了屬性也是無效的。而引用數(shù)據(jù)類型則可以添加屬性,例如
var a = 1; a.b = 2; var c = a.b; console.log(a); // 1 console.log(a.b); // undefined console.log(c); // undefined
顯然,當(dāng)我們試圖給a.b或者c賦值的時(shí)候,都是undefined
function fn(){}; var arr = [1,2,3]; fn.a = 1; arr.b = 2; console.log(fn.a); //1 console.log(arr.b); //2
因?yàn)樗麄儗儆趯ο箢愋停С痔砑訉?yīng)的屬性,別問為啥,因?yàn)閷ο箢愋偷挠羞@個(gè)“天生能力”
基本數(shù)值類型通過“值”來做比較,而對象數(shù)據(jù)類型通過“引用”做比較。
基本上數(shù)據(jù)類型比較很簡單,常規(guī)思維可以理解
var a = "123"; var b = "123"; console.log(a === b); //true
基本數(shù)據(jù)類型對比,沒毛病,很好理解。第一句把“123”賦值給a,第二句把"123"賦值給b,那么a就是"123",b也是同樣的道理,比較的結(jié)果肯定相等。而引用數(shù)據(jù)類型對比,并非把等號右側(cè)的內(nèi)容賦值給左側(cè)變量,而是將左側(cè)變量指向右側(cè)內(nèi)容,舉個(gè)栗子:
var a = {a:1}; var b = {a:1}; console.log(a == b); //false
這個(gè)時(shí)候不能用“基本數(shù)據(jù)類型”的數(shù)據(jù)比較思維來看待這個(gè)了,這里畫個(gè)圖出來,相信就很好理解了
上面的對象分別是底下變量(a和b)的引用(指向),雖然左側(cè)的{a:1}跟右側(cè)的{a:1}看起來一模一樣,但是他們還是獨(dú)立的個(gè)體,不相等的。就像科學(xué)家克隆了一個(gè)動(dòng)物,雖然可以跟母體長的一模一樣,但他們終究是兩個(gè)個(gè)體,看起來一模一樣,但起碼年齡不同的。但如果他們引用的來源相同的話,就返回值就是true了,舉個(gè)栗子:
var a = {a:1}; var b = a; console.log(a === b)
圖示
引用(指向)是一樣的,那么他們的值肯定是相等的。就像夫妻倆生了第一胎,是個(gè)女孩A,國家開放二胎政策后,他們琢磨著再生一個(gè),結(jié)果生了雙胞胎B和C,這個(gè)時(shí)候B和C都叫A親姐姐,那么很明顯了,B的姐姐和C的姐姐肯定是同一個(gè)人。
這個(gè)時(shí)候,有人提出問題來了:如果我改變{a:1}的值,他們是否還是相等的呢?答案是只要他們指向同一個(gè)地方,無論這個(gè)指向的值怎么變,都是一樣的。就像B和C的姐姐是A,10年以后A長大了,但她還是B和C的姐姐。代碼如下:
var a = {a:1}; var b = a; b.a = 2; console.log(a); // {a:2} console.log(b); // {a:2}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92807.html
摘要:一門語言可以使用的值的類型,稱為該語言的數(shù)據(jù)類型。中沒有為字符串定義特殊的數(shù)據(jù)類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見任務(wù)中,布爾操作對于檢驗(yàn)要求輸入的字符串非常有用。 1、標(biāo)識(shí)符(Names) 標(biāo)識(shí)符由一個(gè)字母、下劃線和美元符開頭,其后可以選擇性的加上一個(gè)或多個(gè)字母、數(shù)字或下劃線。標(biāo)識(shí)符不能使用下面這些保留字: abstract boolean...
摘要:一門語言可以使用的值的類型,稱為該語言的數(shù)據(jù)類型。中沒有為字符串定義特殊的數(shù)據(jù)類型。布爾類型表示值和值。輸出支持的布爾操作包括邏輯與邏輯或和邏輯非。在很多常見任務(wù)中,布爾操作對于檢驗(yàn)要求輸入的字符串非常有用。 1、標(biāo)識(shí)符(Names) 標(biāo)識(shí)符由一個(gè)字母、下劃線和美元符開頭,其后可以選擇性的加上一個(gè)或多個(gè)字母、數(shù)字或下劃線。標(biāo)識(shí)符不能使用下面這些保留字: abstract boolean...
摘要:本篇文章將回顧學(xué)習(xí)種基本類型和及數(shù)據(jù)類型之間的轉(zhuǎn)化。如果不能,再調(diào)用對象的方法,再測試返回值是否可以被轉(zhuǎn)化為數(shù)值。首先可以用于任何數(shù)據(jù)類型,另外兩個(gè)則是專門用于把字符串轉(zhuǎn)換成數(shù)值。 概述 ECMAScript中有5中基本數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String,還有一種復(fù)雜數(shù)據(jù)類型對象(Object),Object本質(zhì)上是由一組無序的名值對組成...
摘要:棧區(qū)由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。屬性返回對創(chuàng)建此對象的構(gòu)造函數(shù)的引用。所有的和都是宿主對象參考高級程序設(shè)計(jì)堆和棧的概念和區(qū)別全面解析中的數(shù)據(jù)類型與類型轉(zhuǎn)換 數(shù)據(jù)類型 數(shù)據(jù)類型劃分 javascript中定義了6中基本數(shù)據(jù)類型(原始值類型),和一種復(fù)雜數(shù)據(jù)類型(引用類型),所謂復(fù)雜類型,其本質(zhì)是由無序的名值對(key:val...
摘要:表示尚未存在的對象是一個(gè)有特殊意義的值。可以為變量賦值為,此時(shí)變量的值為已知狀態(tài)不是,即。用來初始化變量,清除變量內(nèi)容,釋放內(nèi)存結(jié)果為但含義不同。且它倆與所有其他值比較的結(jié)果都是。,需要兩個(gè)操作數(shù)同時(shí)轉(zhuǎn)為。 轉(zhuǎn)載請聲明出處 博客原文 隨手翻閱以前的學(xué)習(xí)筆記,順便整理一下放在這里,方便自己復(fù)習(xí),也希望你有也有幫助吧 第一課時(shí) 入門基礎(chǔ) 知識(shí)點(diǎn): 操作系統(tǒng)就是個(gè)應(yīng)用程序 只要是應(yīng)用...
閱讀 553·2023-04-26 02:59
閱讀 691·2023-04-25 16:02
閱讀 2154·2021-08-05 09:55
閱讀 3544·2019-08-30 15:55
閱讀 4640·2019-08-30 15:44
閱讀 1797·2019-08-30 13:02
閱讀 2193·2019-08-29 16:57
閱讀 2288·2019-08-26 13:35