1. 程式人生 > >JavaScript中七種數據類型·中·一

JavaScript中七種數據類型·中·一

賦值 ava number not nts 都是 javascrip 行為 com

Standing on Shoulders of Giants;

說到JavaScript裏的類型很容易就讓人想起 42和"42",分別是string型和number型,但是他們可以直接進行運算。這就是Js裏面有趣又讓人頭疼的問題了。JavaScript會進行==強制類型轉換==

下面我們就正式來認識一下JS中的類型吧:

1、內置類型

JavaScript有七種內置類型:
技術分享圖片

2、類型檢測 typeof

1 typeof undefined === 'undefined';//true
2 typeof 'abc' === 'string';//true
3 typeof 123 === 'number';//true
4 typeof true === 'boolean';//true
5 typeof {a:'test'} === 'object';//true
6 typeof Symbol() === 'symbol';//true

一共七種類型,六種都在上面了,還有誰呢?對,還有null。
null 比較特殊,用typeof 判斷會出問題

    typeof null === 'object';//true

照理說應該是typeof null 的返回值應該是‘null‘,但是這個bug確實在js語言中客觀存在。
如果要判斷一個值是否是null,可以用下面的這種方式來檢測:

 var a = null;
 if(!a&&typeof a === 'object'){
     //此刻說明a的值是null
     
 }

null是“假值”,也是唯一一個用typeof檢測會返回‘object’的基本類型值。

另兩種種特殊情況是function和array

typeof function a(){} === 'function';//true
typeof [1,2,3] === 'object';//object

函數和數組都是對象的內置類型,算是object的‘子類型’。
函數可以擁有屬性,例如a.length;//0;

2、值和類型

JavaScritp中的變量是沒有類型的,只有值才有。變量可以隨時持有任何類型的值
語言引擎不要求變量總是持有與其初始值同類型的值。一個變量可以先被賦值為字符串後重新賦值為數字,不會報錯。

3、undefined和undeclared

變量在未持有值的時候為undefined,此時typeof 返回 ‘ undefined ‘;

已在作用域中聲明但沒有賦值的變量返回值是undefined,在作用域中沒聲明過的變量返回值是:==ReferenceError: 變量名 is not defined==

 var a ;
 a;//undefined
 b;//ReferenceError : b is not defined

這裏有一個要註意的點:typeof 對於未聲明過和聲明過未賦值的變量返回結果都是‘undefined’

4、如何在程序中檢查變量是否已存在

if(typeof myTest !== 'undefined'){
    console.log('myTest已經存在')
}
if(typeof atob === 'undefined'){
    atob = function(){}
}

還可以用‘依賴註入’設計模式,就是將依賴通過參數顯示地傳遞到函數中:

function doSomethingCool(FeatureXyz){
    var helper = FeatureXyz || function(){}
    var val = helper();
}

5、總結:

1、JavaScript中其中內置類型:null、undefined、string、number、boolean、object、symbol
2、變量沒有類型,但它們持有的值有類型,類型定義了值的行為特征
3、undefined:聲明過未賦值變量;undeclared:沒聲明過

JavaScript中七種數據類型·中·一