JS判断,比较及逻辑运算
2020-03-11 本文已影响0人
是小张啊啊
判断语句 比较运算
在js中,凡是运算都会有返回值
在比较运算中,返回值是true或false 即布尔值
var a = 4,
b = 10,
c = 4,
d = "4";
console.log(a == d);//当采用 == 判断两个变量的“值”是否相等时,会有一个变量会做隐式转换,即不完全等于
console.log(a === d);//不仅值相等,数据类型也要相等,即完全等于,其执行效率更高!!!!
if 语句
在if的(条件判断)会产生隐式类型转换!
if(document.getElementById('box')){}
if("false"){}
不执行if语句,执行else语句的几种情况:
1.false
2.空字符串
3.0
4.null 空指针
if(null){
alert('hello')
}
else{
alert("no!")
}
5.undefined
6.NaN
var n;
var nan = n + 1;
console.log(typeof nan);//不是数的数
if(nan){
alert('hello')
}
else{
alert("no!")
}
三目运算
条件 ? 真语句:假语句;其优先级高于赋值运算
注意::对于很长的比较语句,最好不要用三目运算!!!
oBox.title == "zhaosi" ? oBox.title = "lisi" : oBox.title = "zhaosi";
//先执行三目运算 再赋值
oBox.title = oBox.title == "zhaosi" ? "lisi" : "zhaosi";
var bool = true;
bool = bool ? false : true;
switch 语句
替代多个if else 语句相比较的语句
每一个case 的break 必须写,表示退出此次switch循环
switch(a){
case 1:
console.log(1);
break;
case 2:
console.log(2);
break;
case 3:
console.log(3);
break;
case 4:
console.log(4);
break;
default:
console.log("所有情况都不符合时,默认进入defaule(其他)");
break;
}
字符串比较
会按照 ASCII码表顺序挨个比较
var a = "abc";
var b = "acd";
console.log(a>b);
逻辑运算
逻辑运算优先级:
!优先级很高
先&& 再||
- 两侧都为布尔值
&& 两侧都为真,则返回真
|| 两侧都为假,则返回假 - 两侧不是布尔值
&& 两侧遇到假就停止,返回当前值,到头之后返回最后一个值
var a = 5 && 0 && 6;//0是假,返回当前值,返回a = 0
var a = 5 && document>getElementByTagName('p') && 6;
//找不到getElementByTagName('p'),但是返回的是一个空的类数组,是真,所以 a = 6
var a = 5 && document>getElementById('box') && 6;
//找不到document>getElementById('box'),返回的是null,是假
//停止,返回当前值,所以a = null
|| 两侧遇到真停止,返回当前值,到头之后返回最后一个值
var b = 0 || 4 || 5;
//返回b = 4
var b = 1 || 2 && 5;
//&&优先级高于||,先运算2&&5,得到5,再运算1||5,遇到真就停止,1为真,所以返回b = 1
var b = " " || 2 && 0;
//返回0,优先运算 2&&0,得到0,再运算" " || 0," "和0都为假,返回最后一个值0
!取反运算,返回布尔值
var c = "hello";
c = !c;
//得到的是fasle