1. 程式人生 > >JavaScript學習筆記——數據類型

JavaScript學習筆記——數據類型

原因 基本數據類型 更多 指數 布爾 clas 字面值 數值 單引號

  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(msg 
== num) // true var a = undefined let b = undefined console.log(a) // undefined console.log(b) // undefined
View Code

 Boolean

  Boolean類型是使用最多的一種類型,該類型只有兩個字面值:true和false。這兩個值與數字值不是一回事,因此true不一定等於1,而false也不一定等於0.(true和false是區分大小寫的)

各數據類型對Boolean類型的轉換:

技術分享圖片
var num1 = 100;
var num2 = 0;
var str1 = ‘qwer‘;
var
str2 = ‘‘; 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
View Code

 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‘);         // 15
View 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)    // true
View Code

JavaScript學習筆記——數據類型