您的位置:首页 > Web前端 > JavaScript

js数据类型以及"==","==="运算符、if()语句

2015-01-07 18:25 525 查看
JavaScript是弱类型语言(动态类型),即一个变量可以引用任意类型数据,造成了方便开发的同时也多了一些需要考量的东西,尤其涉及不同类型数据的处理。

以下为js数据类型:

字符串('aa',"aaa")、

数字(123,123.00,1.23e2)、

布尔(true,false)、

数组(['a','b','c'])、

对象({firstname:"Bill","lastname":"Gates",age:18})、

Null(null:不存在的对象,如getElementById("xxx"))、

Undefined(undefined:未赋值变量或对象的未声明属性)

document.writeln(typeof 1);//number
document.writeln(typeof NaN);//number
document.writeln(typeof "aa");//string
document.writeln(typeof true);//boolean
document.writeln(typeof [1,2]);//object
document.writeln(typeof {a:1,b:2});//object
document.writeln(typeof null);//object
document.writeln(typeof undefined);//undefined

所以数组也是对象,对象类型变量存储引用,而字符串、数字、布尔为基本类型存储值

再来看看数据的比较:

"==="运算符,表示绝对的相等(类型和内容):

比如:

1 === 1;//true

1==="1";//false 类型不同

"aa" === "bb";//false

true === false; //false

需要注意:

null === null;//true 

undefined === undefined;//true 

null === undefined;//false 

对象类型比较除非引用为同一对象,否则即使两个对象内容相同也为false

"=="运算符,不严格匹配,两个比较对象类型相同时,结果同"===",类型不同时,根据以下规则判断:

1、当存在boolean类型,true转换为1,false转换为0进行比较;

2、当存在string时,字符串为数字且和另一边数值相等为true,其他为false;

3、对象类型和基本类型的比较(待补充。)

4、null == undefined;//true

5、NaN不与任何值相等,包括本身

例如:

number,string比较:

1 == "1";//true

1 == "true";//false

0 == "false";//false

number,boolean比较:

1 == true //true

0 == false //true

2 == true;//false

2 == false;//false

string,boolean比较:

"true" == true;//false

"false" == false;//false

然后是关于if语句的判定,[b]由于js的if语句里允许非boolean值出现,所以需要注意if(a) 和 if(a == true)的写法不仅仅是简洁问题,结论也可能不一样:[/b]

[b]首先,下面这个语法[/b]

if(a){

alert(true);

}else{

alert(false);

}

当(注意此处均为赋值语句):

1、a为string类型时:a = "" (即空字符串)时执行false,其他执行true

2、a为number类型时:a = 0 或 a = NaN 时执行false,其他执行true

3、a = [](空数组) 或 a = {}(空对象) 执行true

4、a=undefined或a=null:执行false

于是,就可以看出if(a) 和 if(a == true)的区别:

1、a为boolean值时,结果相同

2、a为string:

a = "true",分别执行true,false

a = "false",分别执行true,false

a = "0",分别执行true,false

a = "1",分别执行true,true

a = "2",分别执行true,false

3、a为number:

a = 2,分别执行true,false

a = 1,分别执行true,true

a = 0,分别执行false,false

基于此种情况,为了保证程序的可读性,建议使用if(a) 或 if(a === true)的语法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js javascript
相关文章推荐