在javascript中,typeof運算子可傳回的資料型別有:「undefined」、「object」、「boolean」、「number」、「string」、「symbol」、「function」等。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
使用 typeof
運算子可以傳回變數的資料型別。
我們來看看各個資料型態對應typeof的值:
#資料型態 |
結果 |
|
| #Undefined
「undefined」 |
| #Null
「object」 |
| #布林值
「boolean」 |
| 數值
「number」 |
##字符字串 |
「string」
|
Symbol (ECMAScript 6 新增) |
「symbol」
|
宿主物件(JS環境提供的,例如瀏覽器) |
Implementation-dependent
|
函數物件 |
「function」
|
|
|
| ##任何其他物件 | 「object」
#再看看具體的實例: | // Numbers
typeof 37 === 'number';
typeof 3.14 === 'number';
typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写,意思是"不是一个数字"
typeof Number(1) === 'number'; // 不要这样使用!
// Strings
typeof "" === 'string';
typeof "bla" === 'string';
typeof (typeof 1) === 'string'; // typeof返回的肯定是一个字符串
typeof String("abc") === 'string'; // 不要这样使用!
// Booleans
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(true) === 'boolean'; // 不要这样使用!
// Symbols
typeof Symbol() === 'symbol';
typeof Symbol('foo') === 'symbol';
typeof Symbol.iterator === 'symbol';
// Undefined
typeof undefined === 'undefined';
typeof blabla === 'undefined'; // 一个未定义的变量,或者一个定义了却未赋初值的变量
// Objects
typeof {a:1} === 'object';
// 使用Array.isArray或者Object.prototype.toString.call方法可以从基本的对象中区分出数组类型
typeof [1, 2, 4] === 'object';
typeof new Date() === 'object';
// 下面的容易令人迷惑,不要这样使用!
typeof new Boolean(true) === 'object';
typeof new Number(1) ==== 'object';
typeof new String("abc") === 'object';
// 函数
typeof function(){} === 'function';
typeof Math.sin === 'function';
我們會發現一個問題,就是typeof來判斷資料型態其實並不準確。例如數組、正規、日期、物件的typeof回傳值都是object,這就會造成一些誤差。 |
所以在typeof判斷類型的基礎上,我們還需要利用 | Object.prototype.toString
方法來進一步判斷資料型別。
我們來看看在相同資料類型的情況下,toString方法和typeof方法傳回值的差異: |
|
##資料 |
# toString
typeof |
|
|
「foo」
String |
string |
|
new String(“foo”)
String |
object |
|
new Number(1.2)
Number |
object |
|
true
Boolean |
boolean |
|
new Boolean(true )
Boolean |
object |
|
#new Date()
Date |
object |
|
#new Error()
Error |
object |
|
new Array(1, 2, 3)
Array
object
/abc/gRegExp
object########### #new RegExp(“meow”)######RegExp######object###############可以看到利用toString方法可以正確區分出Array、Error 、RegExp、Date等類型。 ######所以我們一般透過這個方法來進行資料類型的驗證。 ######【相關推薦:###javascript學習教學######】#######
以上是javascript的typeof可傳回哪些資料類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!