运算符

运算符

一 表达式

字面量或变量及其他复杂表达式。

二 一元运算符

只能操作一个值的运算符。

1 递增++和递减--

2 前置与后置的区别:

var a=1;
var b=1;
var c=a++;
var d=++b;
console.log(a);  //2
console.log(c);  //1
console.log(b);  //2
console.log(d);  //2

3  其它类型应用一元运算符的规则:

var a='10';
console.log(a++);//10
var b='ab';    
console.log(b++);//NaN 字符串包括非数值转化为NaN
var c=false;
console.log(c++);//0 
var d=1.2;
console.log(d++);//1.2
var e={
	toString:function(){
		return 1;
	}
}
console.log(e++);//1 不设置toString或valueOf即为NaN

4 加和减运算符

var a='1';
console.log(a++); //1
var b=1;
console.log(b++); //1
var c='ab';
console.log(c++); //NaN
var d=1.2;
console.log(+d); //1.2
var e={
	toString:function(){
		return 1;
	}
}
console.log(+e); //1

三 算术运算符

1 加法与减法:

console.log(1+2);                //3
console.log(1+NaN);              //NaN
console.log(Infinity+Infinity);  //Infinity
console.log(Infinity+-Infinity); //NaN
console.log(-Infinity+-Infinity);//-Infinity
console.log('年龄'+1+2);         //年龄12
console.log(1+2+'年龄');         //3年龄
console.log(1+[1,2]);            //11,2
console.log(1+new Object())      //1[object object]
console.log(1+'');               //1 ''转化为0
console.log(1+false);            //1 false转化为0
console.log(1+'10');             //110 +是字符串连接符
console.log(1-'10')              //-9
console.log(1+null);            //1  null转化为0

2 乘法和除法:

console.log(1*2);                 //2
console.log(1*NaN);               //NaN
console.log(Infinity*Infinity);   //Infinity
console.log(-Infinity*Infinity);  //-Infinity
console.log(-Infinity*-Infinity); //Infinity
console.log(1*true);              //1
console.log(1*'');                //0
console.log(1*null);              //0
console.log(1*'abc');             //NaN
console.log(1*[1,2,3]);           //NaN
console.log(1*new Object())       //NaN
3 求模
console.log(10%3);              //1
console.log(10%NaN);            //NaN
console.log(Infinity%Infinity); //NaN
console.log(-Infinity%Infinity);//NaN
console.log(-Infinity%-Infinity);//NaN
console.log(10%true);            //0
console.log(10%null);            //NaN
console.log(10%'');              //NaN
console.log(10%'abc');           //NaN
console.log(10%new Object())     //NaN
console.log(10%0)                //NaN
任何与NaN的运算都等于NaN

四 关系运算符

用于进行比较的运算符

比较规则:

1 两个操作数都是数值,则数值比较;

2 两个操作数都是字符串,比较两个字符串对应的字符编码值;

3 两个操作数只有一个是数值,则将另一个转化为数值,在进行数值比较;

4 两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,在用结果比较。

判断相等与不等

1 null和undefined是相等的,但不恒等;

2 NaN==       返回false;NaN!==   返回true;

3 null既不等于true也不等于false;

4 若两个对象指向同一个对象则返回true;否则返回false;比较引用地址;

5 值和类型都相等时返回true。

五 逻辑运算符

逻辑与(AND),逻辑或(OR),逻辑非(NOT).

逻辑与&&:两边都为true返回true;

如果两边有一个不是布尔值:

1 第一个是对象,返回第二个数;

2 第二个是对象,若第一个返回true,才返回第二个数,否则返回false;

3 有一个是null,返回null;

4 有一个是undefind,返回undefined.

 逻辑或(OR)||:

只要有true就返回true;

有一个不是布尔值:

1 第一个是对象,返回第一个数;

2 两个数都是对象返回第一个数;

3 两个数都是null,返回null;

4 两个数都是NaN,返回NaN;

5 两个数都是undefined返回undefined

逻辑非(NOT)

将值转化为布尔值,然后取反.

1 操作数是一个对象,返回false;

2 操作数是一个空字符串;

3 操作数是一个非空字符串;

4 操作数是0,返回true;

5 操作数是非0,返回false;

6 操作数是null,返回true;

7 操作数是NaN,返回true;

8 操作数是undefined,返回true。

六 位运算符 略

七 赋值运算符

var a=1;

 a+=1 //a=a+1;

八 其它运算符

1 字符串连接符 +

规则:至少一个操作数是字符串。

2 逗号运算符

可以在一条语句里执行多个操作

3 三元操作符

var a=3;
var b=a>5?5:a>4?4:a>3?3:a>2?2:a>1?1:0 //判断a是否大于5 是返回5,不是判断a是否大于4是返回4,不是判断a是否大于3...
console.log(b) //2

九 运算符优先级
从上到下优先级从高到低

运算符

描述

. [] ()

对象成员存取、数组下标、函数调用等

++ -- ~ ! delete new typeof void

一元运算符

* / %

乘法、除法、去模

+ - +

加法、减法、字符串连接

<< >> >>>

移位

< <= > >= instanceof

关系比较、检测类实例

== != === !==

恒等(全等)

&

位与

^

位异或

|

位或

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值