关系运算符
var x = 3;
console.log(x == '3');//自带隐式转换,先将两个类型转换成相同的类型,然后比较
console.log(x === '3');//表示判断两者之间的值和类型是否都相同
console.log(null == undefined)
console.log('' == 0)
console.log('' == false)
// null==undefined
// 0==false==""
// NaN与任何内容都不同,也不等与NaN,与自己都不等
console.log(null == false);//false
console.log(Number("10a") == NaN);//不能这样判断,因为NaN与自己都不相同
console.log(isNaN(Number('10a')));//isNaN()判断否个数值是否是非数值
var y = ''
if (y == 0) {
console.log("y==0|false|'' 这三种情况才能执行语句")
}
if (y == false) {
// '',0,false
}
if(y===false){
// false
}
if(!y){
// 因为这里没有比较,所以这里不用隐式转换成相同的类型,这里只要转换成Boolean值,然后取反
// '',0,false,undefined,null,NaN ==> y等于这些6个值,都可满足条件
}
if(y!=false){
// 这里除了 :'',false,0,其他的都不等
}
if(y!==false){
// 精确比较,除了false,其他的都不等
}
逻辑运算符
! 非
先将值转成Boolean值,然后再取反
var x = 5;
var str="abc"
console.log(!x);//【先】将x转换成bool值,然后取反
// ~表示+1取反,
if(!~str.indexOf('a')){
console.log('不成立')
}
if(!~str.indexOf('f')){
console.log('成立')
}
// 下边两种都是先进行转换bool值,然后判断
var s;
if(!s){
// 先换成bool值,然后取反
console.log('undefined转换成bool值为false')
}
if(s){
}
逻辑与 &&
必须都满足true
// true && true === true
var x = 5, s = '';
if (x === 5 && !s) {
// 这里条件必须都满足true
console.log('满足条件')
}
逻辑或 ||
两者之间有一个满足条件,就条件达成
if (x === 5 || s) {
console.log('满足')
}