运算符
“+”作用可以当做数学运算也可以是字符串链接
任何数据类型跟字符串相加都等于字符串
var a = 'a' + true + 1 ; //打印出来的是什么
var b = 1 + 'a' + 1 + 1; //打印出来的是什么
var c = 1 + 1 + 'a' + 1 + 1; //打印出来的是什么
var d = 1 + 1 +'a' + ( 1 + 2 ); //打印出来的是什么
var e = 0/0; //这里e的值是NaN,应该得出的是一个数字类型的数,但是没法表达就用NaN表示,但是是数字类型
var f = 1 / 0 ; //答案是正无穷infinity
var g = -1 / 0 ; //答案是负无穷 -infinity
var h = 5 % 2 ; //这里求的是5除于2的余数
var i = 1 % 5 ; //1除于5的余数,商0余1
var j = 4 % 6 ; //4
var k = 4 % 5 ; //4
var l = 3 %c4 ; //4
等号 = 的优先级最低
括号()的优先级最高
赋值的顺序是自右向左,计算的顺序是自左向右
var m = 1 ;
var n = m++ +1;
document.write(m);
document.write(n);
//++写在后面就后运行,先计算m+1再赋值给n,然后再n++
var o = 1 ;
var p = ++o +1;
document.write(o);
document.write(p);
var q = 1 ;
var r= q-- + --q;
document.write(r);
//这里是先执行--q,此时q变成了0,此时第一个q也变成了0,那么答案是什么自己测试哈
再来练习一下
var s = 1 ;
var t= --s + --s;
document.write(t);
var u = 1 ;
document.write(u++);
document.write(u);
var v = 1 ;
document.write(++v);
document.write(v);
var dd = 10;
var ee = ++dd - 1 + dd++;
document.write(ee);
document.write(dd);
w++是w += 1的写法
计算出下面的结果
var x = (10*3 - 4/2 +1) % 2 ;
var y = 3 ;
var y %= x + 3 ;
document.write(x++);
document.write(--y);
给你两个变量且赋值,怎么交换两个变量的值
var aa = 222;
var bb = 888;
方法一:
var cc = aa;
aa = bb;
bb = cc;
document.write(aa,bb);
方法二:
var aa = aa + bb;
bb = aa - bb;
aa = aa - bb;
document.write(aa,bb);
比较运算符
字符串的比较比的是ASCII码
var ff = 1 == 2 ; //这里是说1等不等于2,由于1肯定不等于2,所以答案为false
var gg = NaN == NaN ; //NaN不等于任何东西包括自己本身
var hh = undefined == undefined ; //答案为true
var ii = infinity == infinity ; //答案为true
逻辑运算符
&& 与运算符
如果是两个表达式在比较
第一个如果是false,不看后面的是什么,直接输出第一个的答案
第一个如果是true,第二个也是true,返回的结果就是第二个
那如果是多个表达式呢?
只要遇到false,就返回结果
如果全是true,就返回最后一个true的值
var jj = 1 && 2;
var kk = 1 && 2 + 2 ;
var ll = 0 && 2 + + ;
var mm = 1 && 1 && 8 ;
|| 或运算符
简单点就是,碰到真的就返回
如果全是假就返回最后一个假的值
var nn = 1 || 3 ;
var oo = 0 || 3 ;
var pp = 0 || false ;
!非运算符
先转成布尔值,再取反
结果不是true就是false
那有哪些值是false呢?(一共六个)
有:undefined,null,NaN,“”(空的字符串),数字0,false
var qq = ! 123 ;
var rr = ! "" ;
var ss = !! "" ;