JS學習基本概念01之數(shù)據(jù)類型總結(jié)

5種簡單數(shù)據(jù)類型: Undefined, Null, Boolean, Number, String
1種復(fù)雜數(shù)據(jù)類型: Object

Undefined

Undefined類型只有一個取值:undefined.

  • 變量已經(jīng)聲明但未賦值時,取值undefined;
  • 對于未聲明的變量不能使用,但是可以用typeof操作符判斷類型,返回結(jié)果為undefined;

Null

Null類型只有一個取值:null,表示的意思是空對象指針,可以理解為以后要指向一個對象,但還未確定指向誰.

  • typeof will return object;
  • 如果一個變量要保存一個對象,最好顯式地賦值為null;

Boolean

Boolean類型有兩個取值: true and false.

  • 要將一個變量轉(zhuǎn)化為Boolean類型,可以使用Boolean()函數(shù)。

各種數(shù)據(jù)類型轉(zhuǎn)化為Boolean類型的結(jié)果

數(shù)據(jù)類型 轉(zhuǎn)換為true的值 轉(zhuǎn)換為false的值
Boolean true false
String 任何非空字符串 空字符串
Number 任何非零數(shù)值(包括無窮大) 0和NaN
Object 任何對象 null
Undefined 沒有 undefined

Number

  • 嚴格模式下不可以使用八進制字面量
  • 在進行算術(shù)計算時,八進制和十六進制都會被轉(zhuǎn)為十進制
  • 最重要的一點,浮點數(shù)是不精確的,所以不要測試浮點數(shù)的特定值

數(shù)值范圍

  • 最小值: Number.MIN_VALUE, 具體值為5e-324
  • 最大值: Number.MAX-VALUE

NaN

  • 任何涉及NaN的操作,都會返回NaN
  • NaN與任何值都不相等,包括它本身

數(shù)值轉(zhuǎn)換

主要有三個,Number(), parseInt(), parseFloat().Number()可以把任何類型的數(shù)據(jù)轉(zhuǎn)換為數(shù)值,后兩個專門用于轉(zhuǎn)換字符串.

Number()
  1. Boolean類型,true轉(zhuǎn)換為1, false轉(zhuǎn)換為0
  2. null轉(zhuǎn)換為0
  3. undefined轉(zhuǎn)換為NaN
  4. String類型,按如下規(guī)則
    • 空字符串 ----> 0
    • 只包含數(shù)字,則忽略前導0,轉(zhuǎn)換為十進制數(shù)
    • 包含有效的浮點數(shù)格式,以數(shù)字開頭,則忽略前導0,轉(zhuǎn)換為相應(yīng)的浮點數(shù)
    • 包含有效的十六進制格式,以“0x”開頭,轉(zhuǎn)換為相應(yīng)的十進制數(shù)
    • 其他的均為 NaN

總的來說,就是能轉(zhuǎn)換為數(shù)值,就轉(zhuǎn)換為數(shù)值。

  1. 如果是對象,先調(diào)用對象的valueOf(),如果是NaN,則調(diào)用toString(),再轉(zhuǎn)換

注意:一元加操作符的操作與Number()函數(shù)相同.

parseInt()

parseInt()相對來說比較簡單,將一個字符串轉(zhuǎn)換為整數(shù),原則如下:從前往后搜索,第一個不是數(shù)字字符或者負號,直接轉(zhuǎn)換為NaN。只要找到數(shù)字字符,繼續(xù)解析直到遇到非數(shù)字字符。將此間遇到的數(shù)字轉(zhuǎn)換為數(shù)值。前導0會被忽略,所以無法解析八進制數(shù),但可以識別十六進制的數(shù)值.
parseInt()還可以接收第二個參數(shù),來指定轉(zhuǎn)換的進制.

var num = parseInt("0xAF",16);       // 175
var num2 = parseInt("AF",16);       // 175
parseFloat()

parseInt()類似,但是解析的第一個字符可以是小數(shù)點.整個字符串中,第一個小數(shù)點是有效的,第二個無效.parseFloat()始終會忽略前導0.

  • 只解析十進制數(shù)
  • 如果可以解析為整數(shù),則會返回一個整數(shù)

String

  1. 額外注意的是,字符串包含一些轉(zhuǎn)義字符,如\b \t \xnn \unnnn
  2. 字符串一旦創(chuàng)建是不可變的,即使另外賦值,也是銷毀原來的字符串,然后以新的字符串填充該變量

轉(zhuǎn)換為字符串

除了Undefined和Null類型,其他類型的數(shù)據(jù)均含有toString()方法.字符串類型的變量會返回一個副本.

  • Number類型的數(shù)據(jù)調(diào)用toString()時,可以傳入一個參數(shù):表示輸出數(shù)值的基數(shù).
var num = 10;
alert(num.toString(2));     // "1010"
  • 對于undefined和null,可以使用String()來轉(zhuǎn)換為字符串
  • String()函數(shù)可以將任何類型的數(shù)據(jù)轉(zhuǎn)換為字符串
    • 若有toString()方法,則調(diào)用
    • 若參數(shù)是undefined或null,則返回"undefined"或"null"

Object

對象就是一組數(shù)據(jù)與功能的集合.創(chuàng)建Object類型的實例并為其添加屬性和方法,就可以創(chuàng)建自定義對象。
var o = new Object();
每個Object對象的實例都有以下方法和屬性

  1. constructor: 保存著創(chuàng)建當前對象的函數(shù),如Object()
  2. hasOwnProperty(propertyName): 檢查給定屬性是否存在于當前實例而非原型中
  3. isPrototypeOf(object): 檢查傳入的對象是否是當前對象的原型
  4. propertyIsEnumerable(propertyName): 檢查給定屬性是否可以用for-in來枚舉
  5. toLocaleString(): 返回對象的基于地區(qū)的字符串
  6. toString():
  7. valueOf(): 返回對象的字符串、數(shù)值或者布爾值表示,通常與toString()返回的相同

操作符與函數(shù)總結(jié)

  1. typeof
    返回給定數(shù)據(jù)的數(shù)據(jù)類型
  • "undefined" : 該值未定義
  • "boolean" : Boolean類型值
  • "string" : String類型值
  • "number" : Number類型值
  • "object" : 對象或者null
  • "function" : 如果是函數(shù)

注意:對未定義的數(shù)據(jù)使用typeof,會返回"undefined"

  1. isFinite()
    判斷一個數(shù)值是否處于數(shù)值的最大值和最小值之間
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result));        // false
  1. isNaN()
    判斷一個數(shù)據(jù)是否是數(shù)值或者可以轉(zhuǎn)換為數(shù)值
  2. parseInt()&parseFloat&Number()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容