JavaScript中有5中简单的数据类型:Undefined、Null、Boolean、Number、String,还有一种复杂数据类型:Object。JavaScript不支持创建自定义数据类型,因此所有的值都可归为上述6中类型中的一种。
typeof 操作符
typeof是一元操作符,返回值为 Undefined、Boolean、Number、String 和 function 类型(function 属于 Object 类型, function instanceof Object 返回 true )中的一种,用法如下:
<script type="text/javascript">
var temp; //只声明未初始化
document.write("typeof temp: " + typeof temp + "<br/>"); //返回 undefined
document.write("typeof undefined: " + typeof undefined + "<br/>"); //返回 undefined
document.write("typeof true: " + typeof true + "<br/>"); //返回 boolean
document.write("typeof 11: " + typeof 11 + "<br/>"); //返回 number
document.write("typeof Number.MAX_VALUE: " + typeof Number.MAX_VALUE + "<br/>"); //返回 number
document.write("typeof 'abc': " + typeof "abc" + "<br/>"); //返回 string
document.write("typeof null: " + typeof null + "<br/>"); //返回 object
document.write("typeof window: " + typeof window + "<br/>"); //返回 object
document.write("typeof document: " + typeof document + "<br/>"); //返回 object
var test = function () {
};
document.write("typeof test: " + typeof test); //返回 function
</script>
这其中 typeof null 返回 object 可能会令人困惑,我们可以将其理解为 特殊值 null 是一个空的对象引用、一个空对象指针。
关于 null 和 undefined
如果我们要用一个变量保存对象,那么最好将该对象初始化为 null,这样我们可以直接检查变量是否等于null来判断变量是否保存了一个对象
<script type="text/javascript">
var bike;
alert(typeof bike); // 'undefined'
var car = null;
alert(typeof car); // 'object'
if (car != null) {
//对变量执行某些操作
}
//实际上、undefined 是派生自 null 值的 因此
alert(null == undefined); // 'true'
//尽管如此 他们的用途是完全不同的,因此一个变量要保存对象的话,就应该明确的赋值 null
//而 undefined 却不必如此,这样更有助于区分两者
</script>
文章参考《javaScript高级程序设计》