JS 中 if 判断括号内可填写的值
在 JavaScript 中,if语句的括号内可以放置任何可转换为布尔值的表达式。这些表达式包括:
- 原始类型:布尔值、字符串、数字、null 和 undefined,这些类型中的所有值都有一个与之对应的布尔值,例如 false、true、0、NaN、‘’ 和 null 都会转换为 false,而其他值会转换为 true。
- 对象类型:对象、数组、函数等。当对象被转换为布尔值时,所有的对象都会被转换为 true,除非是以下情况:
- 如果对象是 null 或 undefined,则转换为 false。
- 如果对象有一个 valueOf() 方法,且该方法返回 false,那么该对象将被转换为 false。
- 如果对象没有 valueOf() 方法,但有一个 toString() 方法,且该方法返回 false,那么该对象将被转换为 false。
- 如果对象既没有 valueOf() 方法,也没有 toString() 方法,则该对象将被转换为 true。
例如:
if (false) {
// 不会执行这里的代码
}
if (0) {
// 不会执行这里的代码
}
if ('') {
// 不会执行这里的代码
}
if (null) {
// 不会执行这里的代码
}
if (undefined) {
// 不会执行这里的代码
}
if ({}) {
// 会执行这里的代码
}
if ([] && []) {
// 会执行这里的代码
}
需要注意的是,如果表达式中含有多个操作符,那么它们的优先级将根据 JavaScript 运算符优先级规则来确定,需要使用括号来明确优先级。