JavaScript中七種數據類型·中·一
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’的基本類型值。
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中七種數據類型·中·一