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