1、一元运算符数组
++ -- + - 分别 为:自增,自减,正,负函数
2、特殊的几个运算符测试
= 赋值运算符 + 字符串运算符 , 逗号运算符编码
1.= spa
说明:=为赋值 == 比较中的等于(值相等便可) === 比较中恒等(值和原理都相等)code
2.+对象
说明:正常状况下,在运算中,数值类型的优先级是最高的,任何类型的变量都要转换成数值类型进行运算,而后若是是比较就返回出boolean值,若是是算术运算则返回运算结果。可是在出现‘+’时,字符串的优先级最高,任何类型都要转换成String类型。例:ci
var box=10, box1=20, box2='年龄:'; alert(box+box1+box2);//30年龄: alert(box2+box+box1);//年龄:1020 alert(box2+(box+box1));//年龄:30
3.,字符串
说明:能够在一条语句中执行多个操做,如上面声明多个变量、数组、对象中多个属性数学
3、算术运算符
+ - * / % += -= *= /= %= 若是在算术运算符的值不是数值,则后台会使用Number()转型函数将其转换为数值(隐式转换)。正常来讲,算术运算符和正常的数学运算差很少,括号的优先级是最高的。须要注意的是:String类型在进行Number()转换时,要遵循的规则(有一个非数字就是NaN);还有'+'与字符串在一块儿时,再也不是算术运算符,而变成连字符。还有,对象的算术运算,空对象和返回值是字符串的对象,会返回NaN(空对象转数值是NaN,有返回值的经过 toString方法来转换)
var num=10; alert(num+=num);//20 此时 num=20 alert(num-=num);//0 此时 num=0 alert(num*=num);//100 此时 num=0 alert(num/=num);//1 此时 num=0/0=NaN alert(num%=num);//0 此时 num=NaN 任何和NaN进行运算的结果都是NaN //注:若是直接这么运行下去,则会出现下面的值是NaN的问题,由于num被赋了新的值,并非最开始的10,这个其实在后来是运行了的。想要输出上面所想要的结果,只能一个一个的运行。
4、关系运算符
< > <= >= == != === !==
规则:1.有一个数值,都要转换成数值进行比较。2.有字符串时,进行字母的ASCII编码进行比较,且只比较一位,再也不比较第二位(字符串和数值比较时,也是这个规则)。3.若是是对象,与对象的返回值进行比较。4.NaN不等于任何数值,他自己也不相等,5.对象则比较他们是否指向同一个对象,指向同一个对象则返回true,不一个则返回false,且两个空的对象也是不相等的,由于他们存放的位置不同,因此不相等。6.null与undefined的值是相等的,可是类型是不等的。
特殊值对比表
表达式 | 值 |
---|---|
null==undefined | true |
'NaN'==NaN | false |
5==NaN | false |
NaN==NaN | false |
true==1 | true |
false==0 | true |
true==2 | false |
undefined==0 | false |
null==0 | false |
'100'==100 | true |
'100'===100 | false |
undefined==null | true |
5、逻辑运算符
&& || !
1.&&
有一个操做数为假返回值 就是假。当第一个操做数是真是才会运行第二个操做数。当含有对象时,若是第一个操做数为假,则返回false,而不执行对象;当含有null,undefined时,若是第一个操做数为真,则分别返回null或undefined,不然会返回false
2.||
有一个操做数为真则返回真。当第一个操做数的结果为true时,就不会再执行第二个操做数了。当含有对象时,若是第一个操做数是对象,则返回第一个操做对象;若是第二个操做数是对象,只有当第一个操做数是false时,才会返回第二个操做数对象,不然返回true。当含有null,undefined时,当第一个操做数和第二个操做数都是null,undefined时,才返回null,undefined(这个我不是特别肯定,可是又找不到验证的方法,先这样记着);
var box= (5>4) || null; var box1= (5<4) || null; var box3= null || (5>4); var box4= null || (5<4); alert(box+','+box1+','+box3+','+box4);//true,null,true,false
3.!
非真即假,非假即真, !!为取反再取反
6、三元运算符
= 以后是判断条件 ? 是执行 第一个是真的时候执行 :后面是假的时候执行
var box5 = 5>4 ? alert('真'):alert('假'); //真 //至关于 var box5=''; if (5>4) { box5='真'; } else { box5='假'; } alert(box5);//真 //这两个是不同的,可是具体哪儿不同,忘掉了 //判断变量存在不存在 //var x=(typeof f)!='undefined' ? alert(f) : alert(null);//这个是为了测试,下面才是实际应用 var y=(typeof z)!='undefined' ? z : z=null; alert(y); var c; if((typeof cc)!='undefined'){ c=cc }else{ c=null; } alert(c);//null