Javascript 为什么';如果这句话能如预期的那样起作用,那不是吗?
我今天遇到了这样的事情 我会提醒你(再见) 我以为是这样的(提醒大家再见): 我不知道它是如何工作的。您应该查找javascript的“truthy-falsy”属性。这是一个例子。在第一种情况下,Javascript 为什么';如果这句话能如预期的那样起作用,那不是吗?,javascript,Javascript,我今天遇到了这样的事情 我会提醒你(再见) 我以为是这样的(提醒大家再见): 我不知道它是如何工作的。您应该查找javascript的“truthy-falsy”属性。这是一个例子。在第一种情况下,x为真,因为它是一个非空且非未定义的对象,因此它是truthy。在第二种情况下,x是boolean类型的false,即falsy 文章中需要记住的一些事情: 以下值不正确: 假的 0(零) “”(空字符串) 空的 未定义 NaN(表示非数字的特殊数字值!) 其他一切都是真实的 如果您使用x的类型,
x
为真,因为它是一个非空且非未定义的对象,因此它是truthy。在第二种情况下,x
是boolean
类型的false
,即falsy
文章中需要记住的一些事情:
以下值不正确:
- 假的
- 0(零)
- “”(空字符串)
- 空的
- 未定义
- NaN(表示非数字的特殊数字值!)
如果您使用x的类型,您会意识到x是一个对象。对象总是正确的 大多数价值观 转换为true,但以下情况除外,这些情况会转换为false:
- 空字符串“”
- 空的
- 未定义
- 数字0
- 号码是NaN
- 布尔值为false
- 这是的实例,而不是布尔基元
javascript中的
true
和false
是布尔基元。当您将它们与布尔运算符一起使用时,它们的行为与您预期的一样。例如true | | false
是true
和true&&false
是false
另一方面,Boolean
是一个特殊函数,它可以将其他数据类型转换为Boolean(除其他外)。调用newboolean(false)
时,您正在创建一个Boolean
对象,其中包含布尔基元false
。这是本案的关键区别
总之,
使用javascript的真实值规则。它是一个不为null的对象,因此它是“true”李>if(new Boolean())
是一个布尔基元,实际检查真/假if(false)
新布尔值(false)
返回一个非空的对象。非空对象总是true
欢迎使用JavaScript。
x = new Boolean(false);
if (x) {
alert('hello');
}else{
alert('goodbye');
}
x = false;
if (x) {
alert('hello');
}else{
alert('goodbye');
}