數據類型總結——概述
原文
簡書原文:https://www.jianshu.com/p/8056305801dc
大綱
前言
1、關於類型聲明
2、關於強類型和弱類型
3、關於數據類型
4、關於數據類型的引用類型
5、基本數據類型和引用數據類型的比較
前言
數據類型是每一種語言都需要掌握的內容,掌握每一種數據類型的使用是掌握這門語言必不可少的。而我也對數據類型寫了一系列的博客,其中包含了對某一數據類型的概念的認識和理解以及常使用的方法。以下是我對JavaScript這門語言的數據類型的總體認識和理解,希望能對讀者有所幫助。
1、關於類型聲明
有些程序設計語言要求程序員在聲明變量的同時還必須明確地對其數據類型做出聲明,這種做法稱為類型聲明(typing)。但是在JavaScript腳本中為他們做出聲明和進行賦值的語法無任何區別。
2、關於強類型和弱類型
要求程序員必須明確地對數據類型做出聲明的程序設計語言被稱為強類型(strongly typed)語言。像JavaScript這樣不要求程序員進行類型聲明的語言則稱為弱類型(weakly typed)。所謂弱類型以為這程序員可以隨意更改某個變量的數據類型。
3、關於數據類型
1、ECMAScript由五種簡單數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number、String。
2、一種復雜數據類型:Object,Object實際上是由一組無序的名值對組成的。
3、ECMAScript不支持任何自定義類型的機制,而最終所有值都將是上述的六種數據類型之一。
4、關於數據類型的引用類型
1、引用類型的值(對象)是引用類型的一個實例。
2、引用類型也可稱為對象定義,因為它們描述的是一類對象所具有的屬性和方法,雖然引用類型與類看起來相似,但它們不是相同的概念。
3、盡管ECMAScript從技術上講是一門面向對象的語言,但它不具備傳統的面向對象語言所支持的類和接口等基本結構。
5、基本數據類型和引用數據類型的比較
1、ECMAScript中包含兩種不同類型的值:基本類型和引用類型。
2、在將一個值賦給變量時,解析器必須確定這個值是基本類型還是引用類型的值。
3、基本數據類型的值是保存在棧中,有5種基本數據類型:Undefined、Null、Boolean、Number、String,這5種基本數據類型是按值訪問的,因為可以操作保存在變量中的實際的值。
4、引用類型的值是保存在內存中的對象。與其他對象不同,JavaScript不允許直接訪問內存中的位置,也就是說不能直接操作對象的內存空間。在操作對象時,實際上是在操作對象的引用而不是實際對象。為此,引用類型的值是按引用訪問的。對象是直接保存在堆中的,變量中保存的是對象的引用,也就是對象的地址,這個變量的值保存在棧中。操作對象實際上是通過變量操作保存在變量中的對象的引用。
5、定義基本類型值和引用類型值的方式是類似的。
/* 定義基本類型值和引用類型值的方式是類似的:創建一個變量並為該變量賦值。但是當這 個值保存到變量中以後,對不同類型可以執行的操作則大相徑庭。對於引用類型的值,我們可以 為其添加屬性和方法,也可以改變和刪除其屬性和方法。而基本類型的值則不行。 */ //引用類型 var person = new Object(); person.name = "Nicholas"; console.log(person.name);//Nicholas //基本類型 var name = "Nicholas";; name.age = 27; console.log(name.age);//undefined
6、不同數據類型之間的復制。基本類型的值的復制是值的復制,復制之後的兩個變量是完全獨立的兩個變量,可以獨自參與任何操作而不受任何影響。但是對象的復制是引用的復制,也就是將地址也就是對象的引用復制給變量,兩個不同的變量指向的對象是同一個。(其中涉及到了深拷貝和淺拷貝的問題,具體可以參考本人的另一篇博客:JavaScript的深拷貝和淺拷貝)
數據類型總結——概述