JavaScript的六大数据类型2

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 会使程序过于复杂。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181012A0Y89N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券