封装自定义真假值
js
fakeValue(val) {
// 封装自定义假值
if (val == null) return false;
else if (val === "") return false;
else if (val === 0) return true;
else if (val === "0") return true;
else if (Object.is(val, NaN)) return false;
else if (val === "NaN") return false;
else if (!val) return false;
else return true;
}fakeValue(val) {
// 封装自定义假值
if (val == null) return false;
else if (val === "") return false;
else if (val === 0) return true;
else if (val === "0") return true;
else if (Object.is(val, NaN)) return false;
else if (val === "NaN") return false;
else if (!val) return false;
else return true;
}JavaScript的任何值都可以转换为布尔值
以下这些值都会转换为布尔值false:
js
undefined
null
0
-0
NaN
""undefined
null
0
-0
NaN
""其他所有值,包括所有对象(数组)都转换为布尔值true
布尔值有toSting()方法,可以将自己转换为字符串"true"或"false"
三种布尔值操作符(逻辑操作符):
- && 当且仅当两个操作数都为真时,求值结果才是真;任何一个操作数为假,结果都为假。
- || 任何一个操作数为真,求值结果就是真;只有当两个操作数均为假时,结果才是假。
- ! 取反
判断一个变量是否为 NaN
js
// 1. 利用 NaN 是唯一一个不等于自身的特点
function _isNaN(val) {
if (val !== val) {
return true
}
return false
}
// 2. 利用 ES6 中提供的 Object.is() 方法
var a = 'string'
var b = 2
var c = a / b // NaN
Object.is(a, NaN) // false
Object.is(b, NaN) // false
Object.is(c, NaN) // true
// 3. 使用 isNaN (并不推荐)
function _isNaN(val) {
if (typeof val === 'number' && isNaN(val)) {
return true
}
return false
}// 1. 利用 NaN 是唯一一个不等于自身的特点
function _isNaN(val) {
if (val !== val) {
return true
}
return false
}
// 2. 利用 ES6 中提供的 Object.is() 方法
var a = 'string'
var b = 2
var c = a / b // NaN
Object.is(a, NaN) // false
Object.is(b, NaN) // false
Object.is(c, NaN) // true
// 3. 使用 isNaN (并不推荐)
function _isNaN(val) {
if (typeof val === 'number' && isNaN(val)) {
return true
}
return false
}探究真假值
js
// 真值
console.log(Boolean(true))
console.log(Boolean({}))
console.log(Boolean([]))
console.log(Boolean(123))
console.log(Boolean('foo'))
console.log(Boolean(new Date()))
console.log(Boolean(-123))
console.log(Boolean(3.14))
console.log(Boolean(-3.14))
console.log(Boolean(Infinity))
console.log(Boolean(-Infinity))
// 假值
console.log(Boolean(false))
console.log(Boolean(null))
console.log(Boolean(undefined))
console.log(Boolean(0))
console.log(Boolean(0n))
console.log(Boolean(NaN))
console.log(Boolean(''))
console.log(Boolean(""))
console.log(Boolean(document.all))
console.log(Boolean())
console.log(Boolean())// 真值
console.log(Boolean(true))
console.log(Boolean({}))
console.log(Boolean([]))
console.log(Boolean(123))
console.log(Boolean('foo'))
console.log(Boolean(new Date()))
console.log(Boolean(-123))
console.log(Boolean(3.14))
console.log(Boolean(-3.14))
console.log(Boolean(Infinity))
console.log(Boolean(-Infinity))
// 假值
console.log(Boolean(false))
console.log(Boolean(null))
console.log(Boolean(undefined))
console.log(Boolean(0))
console.log(Boolean(0n))
console.log(Boolean(NaN))
console.log(Boolean(''))
console.log(Boolean(""))
console.log(Boolean(document.all))
console.log(Boolean())
console.log(Boolean())
liang14658fox