number、string、boolean
var a = 5
if(a){
console.log('true') // true
}
a = 1
if(a){
console.log('true') // true
}
a = 0
if(a){ // false
console.log('true')
}
a = -1
if(a){
console.log('true') //true
}
a = NaN
if(a){ //false
console.log('true')
}
number 有两个假值,0 NaN
if ("hello") {
console.log("hello") // hello
}
if ("") { //false
console.log('empty')
}
if (" ") {
console.log('blank') // blank
}
string 有一个假值,'' (空字符串)
if(undefined){ //false
consoel.log(1)
}
if(null){ //false
console.log(2)
}
undefined 和 null 都是假值
// 如下代码输出什么?
if ([0]) {
console.log('array') // array
}
if('0.00'){
console.log('0.00') // 0.00
}
if([]){
console.log('空数组') // 空数组
}
var fn = function(){
return fn
}
if(fn()){
console.log('函数') // 函数
}
var obj ={}
if(obj){
console.log('空对象') // 空对象
}
可以看出js有六个假值,0,NaN,''(空字符串),false,undefined,null
== 判断
相等运算符(==),比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。
看个例子
"" == 0 // true
" " == 0 // true
"" == true // false
"" == false // true
" " == true // false
再看个例子
!" " == true // false
!" " == false // true
"hello" == true // false
"hello" == false // false
"0" == true // false
"0" == false // true
"00" == false // true
"0.00" == false // true
下面的例子,你能做对几道
undefined == null //题目1
true == {} //题目2
[] == true //题目3
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == "[object Object]" //题目4
obj == 1 //题目5
obj == true //题目6
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果。
上题答案
1.true 2. false 3.false 4.false 5.true 6.true
不建议使用相等运算符(==),类型转化太难记了,建议使用严格相等运算符(===),严格相等运算符不做类型转化,是不是好用多了
网友评论