js中的操作符

写在前面

js语法

DOM对象(把body,div,p等节点树看成一个对象)

BOM对象(把浏览器的地址栏历史记录DOM等装在一个对象)

浏览器是宿主,但js的宿主不限于浏览器,也可以是服务器,如node.js。

运算符:

//js中拼接运算符
console.log(2+3);
console.log('hello'+''+'world');
console.log(2+3+4+'haha'+5+6);//9haha56,一旦碰到非法数字后,后面的一律理解为“拼接”

例如

var num1=5;
var num2=10;
var message="The sum of 5 and 10 is"+num1+num2;
alert(message);//因为每个+都是独立的,第一个将字符串与数值5拼接,第二个又与10拼接,因此结果The sum of 5 and 10 is 510

var message="The sum of 5 and 10 is"+(num1+num2);
alert(message);//此时The sum of 5 and 10 is 15

 

//js中逻辑运算

都遵循的规则

 

逻辑与操作符&&

1如果第一个操作符是对象,则返回第二个操作数;

2如果第二个操作数是对象,则只有在第一个操作数求值结果为true的情况下才能返回该对象;

3如果两个操作数都是对象,则返回第二个操作数;

4_&&null   -null

5_&&NaN -NaN

6_&&undefined -undefined

属于短路操作,即如果第一个操作数能够决定结果,那么就不会对第二个操作数求值

var found=true;
var result=(found&&s);//这里会发生错误
alert(result);//这里不会执行


var found=false;
var result=(found&&s);//不会发生错误
alert(result);//会执行(“false”)

因此逻辑与操作中不能用未定义的值(s未定义),使用之后就会发生错误。

逻辑或操作符||

1如果第一个操作符是对象,则返回第一个操作数;

2如果第一个操作数求值结果为false,则返回第二个操作数

3如果两个操作数都是对象,则返回第一个操作数;

4null||null   -null

5NaN||NaN -NaN

6undefined||undefined -undefined

返回的是最早能判断表达式结果的那个值
var a=false;
var b=6;
var c=true;
var d=(a||b||c);
console.log(d);//6

在源码中经常用window.hello=window.hello||window.world;哪一个为真就把哪一个值赋给window.hello

posted @ 2016-01-26 11:39  AutismTune  阅读(1023)  评论(0编辑  收藏  举报