操作数是操作数据值的;包括算数操作符,位操作符,关系操作符,相等操作符;可以使用很多值,布尔,字符串、数字,对象;

不过操作对象的时候,操作符通常会调用对象的valueOf或(和)toString方法;以便取得可以操作的值;

1、加性操作符(加法和减法)

加性操作符分为加法和减法;

在加法中,如果有一个操作数是字符串,那么全部按照字符串来运算;字符串的级别最高

在减法中,所有操作符无论是不是数值,都要转化为数值,然后再进行运算;

1)、加法;字符串的级别最高

/*
如果两个操作数都是数值,按照常规的加法运算;
1、如果有一个是NaN,则结果是NaNNaN和任何数运算都等于NaN
2、如果是InfinityInfinity,结果是Infinity
3、如果是-Infinity-Infinity;结果是-Infinity
4、如果是-InfinityInfinity,则结果是NaN
5、如果是+0+0;结果是+0
6、如果是-0-0;结果是-0
7、如果是+0-0;结果是0
**/

/*
如果有一个操作数是字符串,那么就以字符串拼接;相当于字符串拼接的方法;另外一个操作数如果不是字符串,那么会强制转为字符串;然后两个字符串拼接;
1、如果有一个操作数是对象、布尔值;则调用它们的toString()方法;获取相应的字符串值;然后再进行字符串拼接;
2、如果是nullundefined;则调用String方法,取得字符串的“undefined”“null”
* */
var num1= 5,
num2=10;
var message="num1 plus num2 is "+num1+num2;//num1 plus num2 is 510;很多人犯这个错误;
var message2="num1 plus num2 is "+(num1+num2);//num1 plus num2 is 15
//这个里面用圆括号把两个数值变量括在一起;这样就会告诉解析器;先计算其结果;然后将结果与字符串拼接起来;也就是正确的了;
console.log(message);//false;
console.log(message2);//ture;

2)、减法;数字的级别最高;

都会按照转成数字来运算的;
1NaN和任何数想运算都是NaN
2、如果是对象;调用对象的valueOf;如果没有valueOf,则调用它的toString()方法;将得到的字符串转换为数值;

 

2、乘性操作符(乘法和除法和求模)

ECMAScript定义了3个乘性操作符:乘法、除法、求模;

如果参数乘性操作符的不是数值;会先用Number()转型函数将其转换为数值;也就是说,空字符穿被当做0;布尔值true当做1;

NaN和Infinity有点特殊;这个很少用;NaN和任何数操作都是NaN;

3、赋值操作符

简单的复制操作符由等号(=)表示,作用是把右侧的值赋给左侧的变量;

i+=;///赋值
i
-=;
i*=
;
i/=
;
i%=
;
i<<=;//
左移/赋值
i
>>=;//有符号右移/赋值
i
>>>=;//无符号右移/赋值

这些操作符的主要目的是简化赋值操作,用他们不会带来任何性能的提升!

4、相等和全等

==是相等;===是全等

==会强转数据类型,===不会;强转最高级是number;

对应的还有不等,不全等;

推荐用全等和不全等;

5、关系操作符(大于,小于,大于等于,小于等于)

正常和数学运算一样的

但是如果两个都是字符串时候,会比较字符编码值;

如果按照真正的父母顺序比较字符串;需要转为相同的大写或者小写。这样才会正常的;

如果一个字符串和数字比较,字符串会强制转化为数字;

6、布尔操作符(逻辑非,逻辑与、逻辑或)

逻辑非(!):返回一个取反的布尔值;

逻辑与(&&):如果第一个值是true,则返回第二个操作数;如果第一个是false;则返回第一个操作数;

逻辑或(||):如果第一个值是true,则返回第一个操作数;如果第一个的false,则返回第二个操作数;

7、逗号操作符

两个作用

1、用于多个变量声明;间隔作用;

var a= 1,n= 2,c=3;//多个变量声明

2、用于赋值,逗号总会返回最后一项;

var a=(1,2,3,4,4,55),
b=(1,2,3,3,);//这么写是不对的,会报错
console.log(a);//55
console.log(b
);

8、条件操作符(三目运算符)

a=ooxx?true-value:false-value;
//
下面是实际应用;
var max=(num1>num2)?num1:num2;//max存的是最大的那个值

9、一元操作符

i++和==i;

i++是自己先运算,然后再自增;

++i是先自增,然后再运算;

+号运算的时候,如果有字符串,是属于字符串拼接;

10、位操作符

这个好像平时没有怎么用到,等用到的时候重点研究,里面很多坑,讲进制的事;