递增递减操作符
前置型:变量值在语句被求值之前改变;
后置型:递增递减操作是在包含它们的语句被求值之后才执行的。
位操作符
按位非操作:操作数的负值减1,用~表示;
按位与操作:将两个数值(二进制)的每一位对齐,同时为1 时才返回1 ,其余都返回0,用&表示;
按位或操作:同时为0才返回0,其余都返回1,用|表示;
按位异或:只有一个1时才返回1,都是1或者都是0返回0,用^表示;
左移:将数值所有位向左移动指定为主,用<<表示;
有符号的右移:将数值向右移动,单保留符号位,用>>表示;
无符号的右移:将数值的所有32位都向右移动,对于正数与有符号右移相同,对于负数右移后的结果是一个非常大的数。
布尔操作符
逻辑非(!):先将操作数转换成布尔值,然后求其反;
逻辑与(&&):属于短路操作,即如果第一个操作数能确定结果,那么就不会再对第二个操作数求值;
var found = true;
var result = (found && someUndefinedVariable); //这里会发生错误
alert(result); //不会执行这一行
var found = false;
var result = (found && someUndefinedVariable); //不会发生错误
alert(result); //会执行(false)
逻辑或(||):
var found = true;
var result = (found || someUndefinedVariable); //不会发生错误
alert(result); //会执行(true)
var found = false;
var result = (found || someUndefinedVariable); //这里会发生错误
alert(result); //不会执行这一行
相等操作符
对于相等和不相等——先转换再比较;
对于全等和不全等——仅比较而不转换。
在比较相等性之前,不能将null和undefined转换成其他任何值;这就解释了为什么null == 0 结果为false。
条件操作符
var max = (num1 > num2) ? num1 : num2;
break和continue语句
break语句跳出循环后,继续执行循环后的代码;
continue语句如果出现指定条件,终端这个迭代,继续执行下一个迭代。
var num = 0;
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if(i == 5 && j == 5){
continue;
}
num++;
}
}
alert(num); //99,这里只有i和j都为5时num未加1
var num = 0;
outermost:
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if(i == 5 && j == 5){
continue outermost; //跳出内层循环,从外层循环继续执行
}
num++;
}
}
alert(num); //95,这里当i=5时,j=5、6、7、8、9,num都未加1
ECMAScript函数不介意传递进多少个参数,也不介意传进参数的数据类型;因为参数在内部是用一个数组表示的。可以通过arguments对象访问每一个参数,例如arguments[0]就是数组中的第一个元素。