1. 基本运算符
++
例
var a = 10;
a = a + 1;
document.write(a);//结果 11
a = a + 1;可以写成 a ++形式“,”++”即自身加一,再赋值给自身。a++是 a=a+1 的简化形式
++a与a++的区别
例
var a = 1;
document.write(a++);
document.write(a); //答案 1;2
例
var a = 1;
document.write(++a);
document.write(a); //答案 2;2
例
var a =1;
var b = a ++ +1;
document.write(b); //答案 2
a 写在后面就后运行,先计算 a+1=2 赋值给 b 后再++
例
var a = 1;
var b= ++a + 1;
document.write(a);
document.write(b); //答案 2;3
例
var a =10;
document.write(++a );
document.write(a); //答案 11;11
document.write(++a );程序先执行a=a+1,再打印a=a+1后的结果
例
var a =1;
document.write(a ++);
document.write(a); //答案 1;2
程序先执行语句(document.write(a)),再++,所以第一次打印的还是 a,第二次打印 a++后的值
例
var a =10;
var b=++a -1+a++;
document.write(b + “ ” + a); //答案 21 12
程序先执行++a,这个时候 a=11,再执行减1,再加 a(11),所以b 就是 21,最后++,所以a 就是 12
赋值的顺序自右向左,计算的顺序自左向右(按数学来)
var a =1;
var b = a ++ + 1;
document.write(a);
document.write(b); //答案 2,2
程序先执行b=a+1,然后执行a++
例
var a =1;
var b = ++a + 1;
document.write(a);
document.write(b); //答案 2,3
程序先执行++a,然后执行b=a+1,所以b=3
例
var i = 1;
var a = i++; //答案 a = 1; 此时 i 先将值 1 赋给 a,然后自己+1,i=2;
var b = ++i; //答案 b = 3;此时 i 先自己+1 为 3.再给 b 赋值,b=3;
- -
“- -”,是自身减一,在赋值给自身
例 var a = 1;
var b = a-- + -- a;
document.write(b); //答案 0
先执行–a;此时 a 变成
0,然后第一个 a 也变成 0,那么 b = 0-- + --0
例
var a = 1;
var b = --a + --a;
document.write(b); //答案-1
+=
例 var a =10;a ++;a ++;a ++;加十个
简化写法:a +=10;也是 a = a+10;
例
var a =10;
a += 10 + 1; //答案 21
a+=10等于a = a + 10;
a++也可以写成 a +=1
/=
例
var a=10;
a/=2; //答案 5,除二赋给自身
*=
例
var a =10;
a *=2; //答案:20 乘二赋给自身
%=
例 `
var a=10;
a%=2; //答案:0, 10 能整除 2,余数是 0,取余,余数赋给自身。
例
`var a=3;
a%=4; //答案:3,3 除以 4,余数为 3,余数赋给自身
例
var a=0;
a%=4; //答案:0,0 除以 4,余数为 0,余数赋给自身。`
例
var a = 1;
a% =10; //答案:1,1 除以 10,余数为 1,余数赋给自身。`
练习
1.var a =123; var b =234;经过计算交换 a,b 的值
方法一普通方法:
var a=123;
var b=234;
var c = a;
a = b;
b = c;
document.write(a ,b);
方法二
var a=123;
var b=234;
a = a + b;
b = a – b;
a = a –b;
document.write(a ,b);
2
var a =(10 * 3 – 4 / 2 + 1)%2,b=3;
b %= a + 3;
document.write(a++);
document.wtite(“<br>”);
document.write(--b);
document.write(a++);是 1(先打出 1 再++)
document.write(–b);是 2
b % =a + 3,3 的模等于 4,除不开再赋值给 b,b 还是 3
二、比较运算符
1、“>”,”<”,”==”,“>=”,“<=”,”!=”比较结果为 boolean 值true 或 false
字符串的比较,比的是 ASCII 码(七位二进制 0000000) >, <
例
var a = "a">"b";
document.write(a); //答案是 false
例
var a = 1 > 2;
document.write(a); //答案是 false
例
var a = 1 < 2;
document.write(a); //答案是 true
例
var a = "1">"8";
document.write(a); //答案是 false
例
var a = "10">"8";
document.write(a); //答案 false,不是十和八比,是字符串一零和八比,先用开头的一和八比,比不过就不看第二位了;一样的就拿零和八比
例
var a = 123;
document.write(a);
运算结果为真实的值
= =,等不等于
例
`var a = 1 == 2;`
document.write(a); //答案是false,因为 1 肯定不等于 2
例
`var a = NaN == NaN;`
document.write(a); //答案是 false,NaN 不等于任何东西,包括他自己
例
var a = undefined == underfined;
document.write(a); //答案是 true
例
var a = infinity == infinity;
document.write(a); //答案是 true
非数 NaN 是不等于自己的,NaN 得不出数,但它是数字类型
>=,<=
!=是否不等于,非等
比较结果为 boolean 值:true 和 false
逻辑运算符:“&&”,“||”,“!“运算结果为真实的值
“&&”与运算符
两个表达式:先看第一个表达式转换成布尔值的结果是否为真,如果结果为真,那么它会直接返回该表达式的值了,如果第一位布尔值为 false,不看后面的,返回第一个表达式的值就可以了
例
var a = 1 && 2;
document.write(a);//答案 2,
如果第一位 1 为真,结果就为第二位的值 2
例
var a = 1 && 2 + 2;
document.write(a);//答案 4
如果 1 为真,结果就为 4
例
var a = 0 && 2 + 2;
document.write(a);//答案 0
例
var a = 1 && 1 && 8;
document.write(a); //答案 8,先看第一个是否为真,为真再看第二个,中途如果遇到 false,那就返回 false 的值
例
var a =1 + 1 && 1 – 1;
document.write(a); //答案 0
如果是三个或多个表达式,会先看第一个表达式是否为真,如果为真,就看第二个表达式,如果第二个也为真,就看第三个表达式(如果为真就往后看,一旦遇到假就返回到假的值),如果第三个是最后一个表达式,那就直接返回第三个的结果,如果第一个是假,就返回第一个值,当是真的时候就往后走,一旦遇到假,就返回
&&与运算符是有中断作用的,当短路语句使用(如果。。那么。。) 例 var data = …; //执行一个语句,会用到 data
data&&执行一个语句全用到 data
例 data && function(data);
&与运算
例
var num = 1 & 2;
document.write(num); //答案 0
例
var num = 1 & 1;
document.write(num); //答案 1
例
var num = 1 & 3;
document.write(num); //答案 1
运算规则:转化成二进制数,上下一与,不同为 0,相同为 1
“||”或运算符
例
var num = 1 || 3;
document.write(num);//答案 1
例
var num = 0 || 3;
document.write(num)//答案 3
例
var num = 0 || false;
document.write(num) //答案是 false
运算规则看第一个表达式是否为真,如果为真,则返回第一个值,碰到真就返回。如果第一个表达式是假,就看第二个表达式,如果第二个是最后一个,就返回第二个的值
“!“非运算符,否的意思。
先转成布尔值,再取反
例 var a = ! 123;
document.write(a); //答案 false。123 的布尔值是 true,取反是 false
例
var a = ! “”;
document.write(a); //答案 true。空串””布尔值是 false,取反是 true
例
var a = ! !“”;
document.write(a); //答案 false,取反后,再反过来,结果不变
例
var a = true;a =!a;
document.write(a) //答案 false,自身取反,再赋值给自身
!=非等于是表达他们到底等不等的
被认定为 false 的值:
转换为布尔值会被认定为 false 的值 undefined,null,NaN,
“”(空串), 0, false