[英]MessageEmbed field values must be non-empty strings gamedig problem
[英]Javascript: “truthy” values for non-empty strings
据说 Javascript 中的非空字符串被认为是“真实的”。 它解释了为什么代码:
if ("0") {
console.log("OK")
}
打印“确定”。
但是,为什么代码:
true == "0"
返回假?
等于 (==)
如果两个操作数的类型不同,JavaScript 会转换操作数,然后应用严格的比较。 如果操作数是数字或布尔值,则尽可能将操作数转换为数字; else 如果任一操作数是字符串,则另一个操作数在可能的情况下转换为字符串。 如果两个操作数都是对象,那么当操作数引用内存中的同一对象时,JavaScript 会比较相等的内部引用。
(来自 Mozilla 开发者网络中的比较运算符)
因此,在比较true == '0'
,它首先将两者都转换为数字。
Number(true) == Number('0')
其计算结果为1 == 0
。
因此答案是错误的。
正如其他人指出的那样,我相信if ("0")
会检查值是否为空/空/未定义,类似于如果我要写if("some text")
,它也会返回 true。 这里0
不用作 true 或 false,而是用作字符串。
另一方面, if(true == "0")
将返回 false,因为值不匹配。
这是一个片段,显示了在未定义的变量上返回 true 的 if 语句。
var someVar = "0"; if("") { console.log("this doesn't execute"); } if(someVar) { console.log("this returns true"); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.