1.逻辑非 !
console.log(!{'a':1})//false
console.log(!'')//true
console.log(!'aaa')//false
console.log(!123)//false
console.log(!0)//true
console.log(!Infinity)//false
console.log(!null)//true
console.log(!NaN)//true
console.log(!undefined)//true
2.逻辑与 &&
都为 true 才为 true;
逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值;
不能在逻辑与操作中使用未定义的值;
console.log({'a':1}&&'aa')//aa 如果第一个操作数为对象,则返回第二个操作对象
//如果第二个操作数是对象,则只有在第一个操作数求值结果未 true 的情况下才会返回该对象;
//如果两个操作数都是对象,则返回第二个操作数;
//如果有一个操作数是 null,则返回 null;
//如果有一个操作数是 NaN,则返回 NaN;
//如果有一个操作数是 undefined,则返回 undefined;
3.逻辑或 ||
有一个为 true 则为 true;
逻辑或操作也属于短路操作,即如果第一个操作数求值结果为 true,就不会对第二个操作数求值;
console.log({'a':1}||'aa')//{a: 1} 如果第一个操作数为对象,则返回第一个操作对象
//如果第一个操作数的求值为 false,则返回第二个操作数;
//如果两个操作数都是对象,则返回第一个操作数;
//如果两个操作数都是 null,则返回 null;
//如果两个操作数都是 NaN,则返回 NaN;
//如果两个操作数都是 undefined,则返回 undefined;
逻辑或的用途之一:避免为变量赋null或者 undefined;eg:
var myObject=preferredObject || backupObject
//如果preferredObject的值不是 null,则它的值被赋给 myObject;
//如果preferredObject的值是 null,则backupObject的值将赋给 myObject;
break和 continue 语句
用于循环中精确地控制代码的执行。
break语句立即退出当前循环,强制执行循环后面的语句;
continue语句立即退出当前循环,但退出循环后从循环的顶部继续执行;
练习:找出1到100之间的质数(除了1和它本身以外不再有其他的因数,eg:2 3 5 7 )
var flag=0;
for(var i=1;i<=100;i++){
for(var j=2;j<i;j++){
if(i%j==0){//可以被1和自身的其他数除尽
flag=1;
break;//跳出j的循环
}else{
flag=0;
}
}
if(flag==0&&j!=1){
console.log(i)
}
}
outfor:
for(var i=1;i<=100;i++){
for(var j=2;j<i;j++){
if(i%j==0){//可以被1和自身的其他数除尽
continue outfor;//调到最外层循环 label 用法
}
}
if(i!=1){
console.log(i)
}
}
var i=6;
console.log(++i,i)//7,7 ++i是先加后赋值
console.log(i++,i)//7,8 i++是先赋值后加