JavaScript_ 原始类型(primitive type)
ECMAScript有5种原始类型,即:Undefined、Null、Boolean、Number和String。
typeof运算符
typeof运算符有一个参数,即要检查的变量或值。如:
var sTemp = "our world!"; console.log(typeof sTemp);//输出"string" console.log(typeof 2);//输出"number"
对变量或值调用typeof运算符将返回下列值之一:
注释:为什么typeof对于null值会返回"Object"。实际身高是JavaScript最初实现的一个错误,然后被ECMAScript沿用了。现在,null被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它任然是原始值。
1、Undefined类型
如前所述,Undefined类型只有一个值undefined,当声明的变量未初始化时,该变量的默认值是undefined。
var vTemp;//声明了一个变量,但是未初始化 console.log(vTemp);//undefined console.log(typeof vTemp);//"undefined" console.log(vTemp == undefined);//true console.log(typeof vTemp == undefined)//false
提示:值undefined并不同于未定义的值。但是typeof运算符并不真正区分这两种值。
var vTemp;//声明一个变量,但是没有进行初始化 console.log(typeof vTemp);//"undefined" console.log(typeof vTemp2);//"undefined"
前面的代码对两个变量输出地都是"undefined",既是变量vTemp2从未被声明过。如果对vTemp2使用typeof之外的其他运算符的话,就会引起错误,因为其他运算符只能用于被声明与声明 变量。如:
var vTemp; console.log(vTemp2 == undefined);//这里将会出错
当函数无明确返回值时,范虎的也是只"undefined",如:
function testFunc(){ } console.log(testFunc() == undefined);//输出true
Null类型
另一种只有一个值的类型是Null,它只有一个专用值null,即它的字面量。值undefined实际上是从值null派生来的,因此ECMAScript把它们定义为相等的。
console.log(null == undefined);//true;
尽管这两个值相等,但他们的含义不同。undefined是声明了变量但未对其初始化时赋予该变量的值;null则用于表示尚未存在的对象。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。
3、Boolean类型
Boolean类型是ECMAScript中最常用的类型之一。它有两个值true和false(即两个布尔字面量)。即使false不等于0,0也可以在必要时被转换成false。
var nTest = 0; var sTest = '0'; var bTest = false; console.log(nTest == bTest);//true console.log(sTest == bTest);//true console.log(nTest === bTest || sTest === bTest);//false
4、Number类型
ECMA-262中定义的特殊的类型是Number类型。这种类型既可以表示32为的整数,还可以表示64为的浮点数。
直接输入的(而不是另一个变量访问的)任何数字都被看做Number类型的字面量。
4.1 整数
var octalNum1 = 070;//八进制的56 var octalNum2 = 079;//超出范围,被解析为--十进制的79 var octalNum3 = 08;//超出范围,被解析为--十进制的8
八进制字面量在严格模式下是无效的,会导致JavaScript引擎跑出错误。
var hexNum1 = 0xA;//十六进制的10 var hexNum2 = 0x1f;//十六进制31
提示:在进行算术计算时,所有的8进制和16进制数值都会被转换为十进制进行计算。
4.2 浮点数
所谓浮点数,就是该数值中必须包含一个小数点。并且小数点后面必须至少有一位数字。定义一个浮点值,如:
var fNum = 5.0;
注:1)对于浮点字面量,用它进行及孙倩,真正存储的是字符串;
2)虽然var fNum = .1这种写法有效,但是不推荐。
4.3特殊的Number值
var iNum = 9, sTemp = '9', sTemp2 = 'red'; console.log(iNum/0);//输出Infinity console.log(sTemp/0);//"Infinity" console.log(sTemp2/0);//"NaN" console.log(sTemp2/1);//"NaN"优质内容筛选与推荐>>