typeof 操作符
你可以使用 typeof 操作符来检测变量的数据类型。
typeof(的)运算数未定义,返回(的)就是 "undefined".
运算数为数字 typeof(x) = "number"
字符串 typeof(x) = "string"
布尔值 typeof(x) = "boolean"
对象,数组和null typeof(x) = "object"
函数 typeof(x) = "function"
typeof 运算符返回一个用来表示表达式(的)数据类型(的)字符串。
可能(的)字符串有:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。
如:
alert(typeof (123));//typeof(123)返回"number"
alert(typeof ("123"));//typeof("123")返回"string"
typeof 运算符返回一个用来表示表达式(的)数据类型(的)字符串。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof "john" + "<br>" + typeof 3.14 + "<br>" + typeof false + "<br>" + typeof [1,2,3,4] + "<br>" + typeof {name:'john', age:34}; </script> </body> </html>
空值(Null)
空值类型表示该变量或内容无任何值。例如一个表单文本输入框中无任何内容时,我们试图用 JavaScript 去获取该文本输入框元素的值时,得到的结果就是 null。
要判断是否为空值,只需将需要比较的内容与 null 进行比较即可:
if( x == null ) { ... }
鉴于 Web 系统运行的特点,很多情况下可以通过给一个变量赋 null 值来清除变量的内容而不用特意去销毁该变量。
未定义(Undefined)
变量被创建后,未给该变量赋值,该变量即为未定义类型。未定义类型有一个确定的值 undefined,因此要判断一个变量或返回结果是否为未定义类型,只需将它与 undefined 进行比较即可:
if( x == undefined ) { ... }
Undefined 和 Null 的区别
Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
undefined表示一个变量没有被声明,或者被声明了但没有被赋值(未初始化),一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined;
null是一个表示“没有值”的值;
Javascript将未赋值的变量默认值设为undefined;
Javascript从来不会将变量设为null。它是用来让程序员表明某个用var声明的变量时没有值的;
undefined不是一个有效的JSON,而null是;undefined的类型(typeof)是undefined;
null的类型(typeof)是object. ;
它们都是基本类型;
他们都是falsy (Boolean(undefined) ->// false, Boolean(null) ->// false);
你可以这样判断一个变量是否是undefined。typeof variable === "undefined";
你可以这样判断一个变量是否是null。variable === null;
双等号比较时它们相等(null==undefined ->// true),但三等号比较时不相等(null===undefined->// false);
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof undefined + "<br>" + typeof null + "<br>" + (null === undefined) + "<br>" + (null == undefined); </script> </body> </html>