“truthy”和“falsey”的结果在JavaScript中令人困惑
Results of "truthy" and "falsey" is confusing in JavaScript
我正在学习JavaScript基础知识。我对"真实"和"虚假"的结果感到困惑。谁能说出原因呢?
myVariable = undefined ? "truthy" : "falsey";
结果是"假的"。
myVariable = typeOf someUndefinedVariable ? "truthy" : "falsey";
结果是"真实"。
我期望第二个结果是"假的"。为什么我变得"真实"?我真的很困惑。
typeof
返回值的类型名称,该名称始终为非空字符串。非空字符串是真实的。
> typeof someUndefinedVariable
"undefined"
> typeof (typeof someUndefinedVariable)
"string"
> Boolean("undefined")
true
参见 JavaScript 中的所有错误值
首先,我将解释您展示的代码中发生了什么,以确保您理解它。也许你已经明白了前半部分,但既然你说你很困惑,我假设你没有。
myVariable = undefined ? "truthy" : "falsey";
// result: "falsey"
在这里,您正在查看一个值,undefined
,并提出一个问题:它是真的还是假的?在此基础上,您选择一个字符串。然后将该字符串存储到 myVariable
中。它实际上与以下代码相同:
var myVariable;
if (undefined) {
myVariable = 'truthy';
} else {
myVariable = 'falsey';
}
由于undefined
总是假的,所以在最后,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 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中的所有其他值都是真实的。
- 除空字符串之外的任何字符串
- 除 0 以外的任何数字
- 任何数组,包括空数组
- 任何对象,包括空对象
- 功能
- 等。。。
相关文章:
- 奇怪的Javascript结果
- 如何将JavaScript结果显示为段落
- 如何将JavaScript结果输出到iframe中
- 在javascript结果之前有很多空格
- 在 jsf/primefaces 组件中评估 javascript 结果
- 将 JavaScript 结果打印到两个 DIV 而不是输入中
- PHP curl - 可以检索 JavaScript 结果
- JavaScript-结果显示在IE,但不是Chrome或FF
- 在PHP/HTML源代码中回显JavaScript结果
- 如何存储稍后将显示的ajax调用的本地javascript结果
- 将PHP var设置为javascript结果
- 谷歌地图API V3和Javascript结果和标记
- 如何改变一个javascript结果从选择框到文本区域
- 不能输出一个简单的javascript结果
- 用html显示JavaScript结果
- 在python列表中获取javascript结果
- 将Javascript结果传递给php
- 在三个javascript结果的前两个中添加图像
- 我的HTML文件如何将JavaScript结果传递给调用它的Python脚本?
- 从控制事件中获取html格式的javascript结果