我正在学习 JavaScript 基础知识。我对“真”和“假”的结果感到困惑。谁能告诉一下这是什么原因吗?
myVariable = undefined ? "truthy" : "falsey";
结果是“假”。
myVariable = typeOf someUndefinedVariable ? "truthy" : "falsey";
结果是“真实”。
我预计第二个结果是“falsey”。为什么我会得到“真相”?我真的很困惑。
typeof
返回值的类型name,它始终是一个非空字符串。非空字符串是 truthy。
> typeof someUndefinedVariable
"undefined"
> typeof (typeof someUndefinedVariable)
"string"
> Boolean("undefined")
true
首先,我将解释您所显示的代码中发生的情况,以确保您理解它。也许你已经明白了前半部分,但既然你说你很困惑,我就假设你没有明白。
myVariable = undefined ? "truthy" : "falsey";
// result: "falsey"
在这里,您正在查看一个值,
undefined
,并提出一个问题:它是真还是假?基于此您选择一个字符串。然后将该字符串存储到 myVariable
中。它实际上与此代码相同:
var myVariable;
if (undefined) {
myVariable = 'truthy';
} else {
myVariable = 'falsey';
}
由于
undefined
始终为 false,因此最后,myVariable
包含字符串 'falsey'
。
这是您的第二段代码:
myVariable = typeOf someUndefinedVariable ? "truthy" : "falsey";
// result: "truthy"
首先,我必须指出
typeOf
在我所知道的任何 Javascript 运行时中都不是有效的函数或运算符。我认为这是一个拼写错误,您打算使用 typeof
来代替。上面的代码,如所写的,应该抛出语法错误。更正了,我们有...
myVariable = typeof someUndefinedVariable ? "truthy" : "falsey";
// result: "truthy"
为了清楚起见,让我们将其重写为 if/else:
var myVariable;
if (typeof someUndefinedVariable) {
myVariable = 'truthy';
} else {
myVariable = 'falsey';
}
正如另一位回答者指出的那样,typeof总是会返回,作为字符串,您赋予它的符号的类型。
typeof(someUndefinedVariable);
"undefined"
由于除了空字符串之外的所有字符串都是真值,所以你会得到真值。
Javascript 中只有 7 个 false 值。
false Boolean false
undefined If a symbol is not defined at all
null A defined symbol, but it has no value inside
0 Numeric positive 0
-0 Numeric negative 0
'' or "" Empty string
NaN Magic value "Not a Number"
Javascript 中的所有其他值都是真实的。