js数据类型主要有一下几个部分:
值类型(基本类型):
1.字符串类型(string)
2.数值类型(number)
3.布尔类型(boolean)
4.对空类型(Null)
5.未定义类型(Undefined)
6.symbol类型:ES6 引入了一种新的原始数据类型,表示独一无二的值。
引用数据类型:
1.对象类型(Object)
2.数组类型(Array)
3.函数类型(Function)
与其他语言类型的区别
原始类型(基本类型):
按值访问,可以操作保存在变量中实际的值。其中null和undefined比较特殊。
引用类型:
引用类型的值是保存在内存中的对象。
区别:
JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。所以引用类型的值是按引用访问的。
布尔类型(Boolean)
布尔值只有两个:True、False。
强制转换函数:Boolean()。
创建Boolean对象:
var MyBoolean =new Boolean();
用法:
1.Boolean类型和Number类型相结合时,True转化为1,False转化为0;
var a =Number(true); // boolean 值 true 转换成 数值型 1alert (a); //返回1var b=Boolean(0); //数值0转换成布尔值falsealert (b); //返回 false
2.数据类型转换Boolean类型返回值标准:
转换为true的类型有: Boolean:true ;string:非空字符串;Number:非0数值等。
转换成false的类型有: Boolean:false ;string:空字符串;Number:0 等。
例如:
var a1=new Boolean(0); //创建Boolean对象:a1
var a2=new Boolean(1);
var a3=new Boolean("");
var a4=new Boolean(null);
var a5=new Boolean(NaN);
var a6=new Boolean("false");
var a7=new Boolean("I am so cute!");
var a8=new Boolean(13245);
var a9=new Boolean(undefined);
document.write("0 对应Boolean值:" + a1 + "
"); //输出0 对应bool值 false
document.write("1 对应Boolean值:" + a2 + "
");
document.write("空字符串 对应Boolean值:" + a3 + "
");
document.write("null 对应Boolean值:" + a4 + "
");
document.write("NaN 对应Boolean值:" + a5 + "
");
document.write("字符串'false' 对应Boolean值:" + a6 + "
");
document.write("字符串'I am so cute!' 对应Boolean值:" + a7 + "
");
document.write("数值 13245 对应Boolean值:" + a8 + "
");
document.write("undefined 对应Boolean值:" + a9 + "
");
结果如下:
空类型NULL
1、 Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑的角度看,null值表示一个空对象的指针。null常被放在期望一个对象,但不引用任何对象的参数位置。
var car =null; alert(typeof null); //返回object
从最底层讲:不同的对象在底层都表示为二进制,在javascript中二进制前三位都为0会被判断为object类型,null的二进制表示是全0,所以执行typeof时返回'object'
2、 如果定义的变量准备在将来用户保存对象,那么最好将该变量初始化为null而不是其他值。如此,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。如下面的例子:
if(car != null){ //对car执行某些操作 }
实际上,undefined值是派生自null值的,因此ECMA-262规定对他们的相等测试要返回true;
alert(null == undefined) //true
尽管null和undefined有这样的关系,但它们的用途完全不同:只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。
在程序中如何判断变量是否为null
错误示例1:
var exp = null; if (exp == null) { alert("is null"); }
exp 为 undefined 时,也会得到与 null 相同的结果,虽然 null 和 undefined 不一样。
注意:要同时判断 null 和 undefined 时可使用本法。
错误示例2:
var exp = null; if (!exp) { alert("is null"); }
如果 exp 为 undefined,或数字零,或 false,也会得到与 null 相同的结果,虽然 null 和二者不一样。
注意:要同时判断 null、undefined、数字零、false 时可使用本法。
错误示例3:
var exp = null; if (typeof exp == "null") { alert("is null"); }
为了向下兼容,exp 为 null 时,typeof null 总返回 object,所以不能这样判断。
错误示例4:
var exp = null; if (isNull(exp)) { alert("is null"); }
VBScript 中有 IsNull 这个函数,但 JavaScript 中没有。
*********************************************************************************************
更正方法1:
var exp = null; if (!exp && typeof exp != "undefined" && exp != 0) { alert("is null"); }
注:
typeof exp != "undefined" 排除了 undefined;
exp != 0 排除了数字零和 false。
简化更正方法:
var exp = null; if (exp === null) { alert("is null"); }
注:
我们在 DOM 应用中,一般只需要用 (!exp) 来判断就可以了,因为 DOM 应用中,可能返回 null,可能返回 undefined,如果具体判断 null 还是 undefined 会使程序过于复杂。
领取专属 10元无门槛券
私享最新 技术干货