ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined. Null. Boolean、Number和String。还有1神复杂数据类型-Object,Object本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据类型之一。乍一看,好像只有6种数据类型不足以表示所有数据;但是,由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要了。
1. typeof操作符
鉴于ECMAScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型typeof就是负责提供这方面信息的操作符。对一个值使用typeof操作符可能返回下列某个字符串:
”undefined”——如果这个值未定义;
”boolean”——如果这个值是布尔值;
”string”——如果这个值是字符串;
”number”——如果这个值是数值;
”object”——如果这个值是对象或null;
”function”——如果这个值是函数。
下面是几个使用typeof操作符的例子:
var message= "some string";
alert (typeof message); //"string"
alert(typeof (message)); //"string"
alert (typeof 95); // "number"
这几个例子说明,typeof操作符的操作数可以是变量(message),也可以是数值字面量。注意,typeof是一个操作符而不是函数,因此例子中的圆括号不是必需的(尽管可以使用)。
南昌网站建设公司百恒网络前端开发工程师提醒广大企业网站建设公司技术人员和站长:从技术角度讲,函数在ECMAscript中是对象,不是一种数据类型,然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象是有必要的.
2. Undefined类型
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined,例如:
var message;
alert (message==undefined); //true
这个例子只声明了变量message,但未对其进行初始化。比较这个变量与undefined宇面量,结果表明它们是相等的。这个例子与下面的例子是等价的:
var messagei = undefined;
alert (message==undefined); //true
这个例子使用undefined值显式初始化了变量message。但我们没有必要这么做,因为未经初始化的值默认就会取得undefined值。
南昌网络公司百恒网络前端开发工程师提示:一般而言,不存在需要显式地把一个变量设置为undefined 值的情况,字面值undefined的主要目的是用于比较,而ECMA-262第3版之前的版本中没有规定这个值.第3版引入这个值是为了正式区分空对象指针与未经初始化的变量. undefined值的变量与尚未定义的变量还是不一样的。看看下面这个例子:
var message; //这个变量声明之后默认取得了undefined值
//下面这个变量并没有声明
//var age
alert (message); // ”undefined“
alert( age); //产生错误
运行以上代码,第一个警告框会显示变量message的值,即undefined”。而第二个警告框——由于传递给alert()函数的是尚未声明的变量age-则会导致一个错误。对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型。
然而,令人困惑的是:对未初始化的变量执行typeof操作符会返回unde fined值,而对未声明的变量执行typeof操作符同样也会返回undefined值。来看下面的例子:
var message;//这个变量声明之后默认取得了undefined值
//下面这个变量并没有声明
//var age
alert( typeof message); //"undefined"
alert(typeof age); //"undefined"
结果表明’对未初始化和未声明的变量执行typeof操作符都返回了undefined值;这个结果有其逻辑上的合理性。因为虽然这两种变量从技术角度看有本质区别,但实际上无论对哪种变量也不可能执行真正的操作。 南昌建网站公司前端开发工程师提示:即使示初始化的变量会自动赋予undefined值,但南昌网站制作公司前端开发工程师认为显式地初始化变量依然是明智的选择,如果能够做到这一点,那么当typeof操作符返回undefined值时,我们就知道检测的变量还没有被声明,而不是尚未初始化.
希望对广大站长或网站建设公司或从事企业网站建设的小团队有所帮助,如对此不太理解的,可以与南昌网络公司百恒网络技术部联系。我们很高与广大站长和网站建设公司技术人员分享我们的技术和经验。