Javascript-如果语句同时检查表达式和定义声明?这令人困惑 来自C++和C语言背景,我非常熟悉基本的IF(表达式)语法。然而,我认为将两个表达式(真/假)和对象存在同时作为一个表达式是不太可读的。因为现在如果我看到下面这样的函数,我不知道输入的数据是对象(存在/未定义检查)还是布尔值 var boolTrue = true; var randomObject; if (boolTrue) // this will fire if (randomObject) // this will fire, because the object is defined if (!objectNotDefined) // this will fire, because there is no defined object named 'objectNotDefined'
就是这样吗?我的意思是,有没有什么东西可以轻松阅读?此外,这在JS规范的任何地方都有记录(好奇)?它检查它是否真实 在JavaScript中,除了Javascript-如果语句同时检查表达式和定义声明?这令人困惑 来自C++和C语言背景,我非常熟悉基本的IF(表达式)语法。然而,我认为将两个表达式(真/假)和对象存在同时作为一个表达式是不太可读的。因为现在如果我看到下面这样的函数,我不知道输入的数据是对象(存在/未定义检查)还是布尔值 var boolTrue = true; var randomObject; if (boolTrue) // this will fire if (randomObject) // this will fire, because the object is defined if (!objectNotDefined) // this will fire, because there is no defined object named 'objectNotDefined',javascript,Javascript,就是这样吗?我的意思是,有没有什么东西可以轻松阅读?此外,这在JS规范的任何地方都有记录(好奇)?它检查它是否真实 在JavaScript中,除了false、0、”、未定义的、null和NaN之外,一切都是真实的 因此,true以及任何对象(也包括空对象/数组等)都将通过 请注意,如果您的意思是“已声明但未定义”,则您的第三条注释为true—从未声明的变量在访问时抛出ReferenceError。声明的、未定义的变量(var something;)是未定义的(因此,不是truthy),因此如果您
false
、0
、”
、未定义的、null
和NaN
之外,一切都是真实的
因此,true
以及任何对象(也包括空对象/数组等)都将通过
请注意,如果您的意思是“已声明但未定义”,则您的第三条注释为true—从未声明的变量在访问时抛出ReferenceError
。声明的、未定义的变量(var something;
)是未定义的
(因此,不是truthy),因此如果您否定它,它确实会通过条件。您可以单独检查(非)存在:
function(data) {
if (data)
// is this checking if the object is true/false or if the object is in existence?
}
但是,您显示的语法通常作为一种更短的形式使用,并且在大多数情况下已经足够了。以下值在条件语句中等同于false:
if ( typeof variable == 'undefined' ) {
// other code
}
在Javascript中,除了false
、0
、undefined
、null
、NaN
和空字符串之外,所有内容都是“真的”(或者用Javascript术语更准确地说是“真的”)
为避免混淆,请使用:
false
null
undefined
The empty string ”
The number 0
The number NaN
及
你的例子是错误的<代码>如果(随机对象)
不会触发,则为false
<代码>如果(!objectNotDefined)
将给出一个错误“objectNotDefined未定义”
if (data === true) // Is it really true?
if (typeof data === 'undefined') // Is the variable undefined?