JavaScript學習筆記——數據類型
JavaScript有兩種數據類型:簡單數據類型(基本數據類型)和復雜數據類型(引用類型)。
簡單數據類型:Nndefined,Null,Boolean,Number和String
復雜數據類型:object
簡單數據類型
Nndefined
undefined類型只有一個值,即特殊的undefined。在使用var和let聲明變量但未對其加以初始化時,這個變量的值就是undefined。
var msg; let num; console.log(msg) // undefined console.log(num) // undefined console.log(msgView Code== num) // true var a = undefined let b = undefined console.log(a) // undefined console.log(b) // undefined
Boolean
Boolean類型是使用最多的一種類型,該類型只有兩個字面值:true和false。這兩個值與數字值不是一回事,因此true不一定等於1,而false也不一定等於0.(true和false是區分大小寫的)
各數據類型對Boolean類型的轉換:
var num1 = 100; var num2 = 0; var str1 = ‘qwer‘; varView Codestr2 = ‘‘; var bool1 = false; var bool2 = true; var und = undefined; var nul = null; var arr1 = [1,2,3]; var arr2 = []; var obj1 = {}; var obj2 = {a: 1}; console.log(Boolean(num1)) // true console.log(Boolean(num2)) // false console.log(Boolean(str1)) // true console.log(Boolean(str2)) // false console.log(Boolean(bool1)) //false console.log(Boolean(bool2)) // true console.log(Boolean(und)) // false console.log(Boolean(nul)) // false console.log(Boolean(arr1)) // true console.log(Boolean(arr2)) // true console.log(Boolean(obj1)) // true console.log(Boolean(obj2)) // true
Null
Null類型只有一個值,即特殊值null。從邏輯角度來看,null值表示一個空對象指針,這也正是使用typeof操作符檢測null值時會返回‘object’的原因。
如果定義一個空變量準備用來保存對象,那麽最好將該變量初始化為null。
Number
Number類型有兩種類型的數值:整數型和浮點類型
浮點數值
所謂的浮點類型,就是該數值必須包含一個小數點,並且小數點後面必須至少有一位數字。
var float1 = 1.01
var float2 = 0.1
var float3 = .3 // 有效,但不推薦
由於保存浮點數值需要的內存空間是保存整數值得兩倍,因此ECMAScript會將浮點數值轉換為整數值。如果小數點後沒有跟任何數字,那麽這個數值就可以作為整數來保存。如果浮點數值本身表示的就是一個整數,那麽該值也會被轉換成整數。
對於那些極大或極小值,可以使用科學計數法表示(e)。用e表示法表示的數值等於e前面的數值乘以10的指數次冪(e後面的數值)
var num = 3.2345e7 // 32345000
數值範圍
由於內存限制,ECMAScript並不能保存世界上所有的數值,能保存的最小數值是5e-324,最大數值是1.7976931348623157e+308。如果超過最大值則會被自動轉化為Infinity,小於最小值會被轉化為-Infinity。他們將不再參與下一次的計算。
NaN
NaN,即非數值是一個特殊的數值,這個值用於表示一個本來要返回數值的操作數未返回數值的情況。涉及到NaN的操作都會返回NaN,其次,NaN與任何值都不相等,包括本身。
數值轉換
有三個函數可以把非數值轉換為數值1:Number()、parseInt()和parseFloat()。第一個函數可以用於任何數據類型的轉換,另外兩個函數專門用於把字符串轉換成數值。
Number()的轉換規則:
- 如果是Boolean值,true和false分別被轉化為1和0
- 如果是數字值,只是單純的傳入和返回
- 如果是null,返回0
- 如果是nudefind,返回NaN
- 如果是字符串:只包含數字且前面沒有0,將其轉換為數值返回,有0將忽略前導的0,返回後面的數值;如果是十六進制的格式將轉換為同大小的十進制數值;空字符串,則將其轉化為0;如果包含除上述格式外的其他字符串,則將其轉換為NaN
- 如果是對象,則調用對象的valueOf()方法,然後依賴前面的規則轉換。如果轉換的結果是NaN,則調用toString()方法,在依次按照前面的規則轉換。
parseInt()在轉換字符串的時候,更多是看其是否符合數值模式,他會忽略字符串前面的空格,知道找到第一個非空字符。如果第一個字符不是數字字符或負號,將返回NaN,如果第一個字符是數字字符,將繼續解析下面的字符,直至解析完所有的字符或者遇到一個非數字字符。
var num1 = parseInt(‘12345hjk‘); // 12345 var num2 = parseInt(‘‘); // NaN var num3 = parseInt(‘0xA‘); // 10 var num4 = parseInt(22.2); // 22 var num5 = parseInt(‘070‘); // 70 var num6 = parseInt(‘70‘); // 70 var num7 = parseInt(‘0xf‘); // 15View Code
String
String類型多由0個或多個16位的Unicode字符逐層的字符序列。字符串可以有單引號或雙引號表示。
字符字面量
字面量 | 含義 |
\n | 換行 |
\t | 制表 |
\b | 空格 |
\r | 回車 |
\f | 進紙 |
\\ | 斜杠 |
\‘ | 單引號 |
\" | 雙引號 |
字符串特點:字符串是不可變得,字符串一旦創建,他們的值就不能改變,要改變某個變量保存的字符串,首先要銷毀原來的字符串,然後在把新的字符串賦值給這個變量。
如果要把其他類型的值轉換成字符串,可以使用toString()方法。null和undefined類型的值不可以使用。但是可以使用String()方法
Object
在ECMAScript中對象就是一組數據和功能的集合。對象的創建方法有兩種,第一種是通過new關鍵字後跟要創建的對象類型的名稱來創建,第二種是直接給變量賦上一個空的對象或數組。
var o = new Object()
object的每一個實例都具有一下的方法和屬性:
- Constructor:保存著用於創建當前對象的函數。o的構造函數就是Object()
- hasOwnProperty():用於檢查給定的屬性在當前的實例中是否存在。
- isPrototypeOf():用於檢查傳入的對象是否是另一個對象的原型
- propertyIsEnumerable():用於檢查給定的屬性是否能被for-in語句來枚舉
- toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應
- toString():返回對象的字符串表示
- valueOf():返回對象的字符串、數值或布爾值表示。
Symbol
Symbol類型是es6新添加的一種基本類型的數據,它表示的是獨一無二的值。它通過symbol函數來生成,凡是屬性名屬於 Symbol 類型,就都是獨一無二的,可以保證不會與其他屬性名產生沖突。
數據類型的檢測
要想檢測一個變量是基本數據類型或者是復雜數據類型可以使用typeof進行檢測。使用typeof檢測數據類型時null、對象和數組都是返回的object
var a = null // object var b = 12 // number var c = ‘123‘ // string var d = true // boolean var e = undefined // undefined var f = new Object() // object var g = Symbol() // symbol var h = new Array() // object console.log(typeof a) console.log(typeof b) console.log(typeof c) console.log(typeof d) console.log(typeof e) console.log(typeof f) console.log(typeof g) console.log(typeof h) console.log(h instanceof Array) // true console.log(f instanceof Object) // true console.log(a instanceof Object) // false console.log(h instanceof Object) // trueView Code
JavaScript學習筆記——數據類型