Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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-如果语句同时检查表达式和定义声明?这令人困惑 来自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),因此如果您

就是这样吗?我的意思是,有没有什么东西可以轻松阅读?此外,这在JS规范的任何地方都有记录(好奇)?

它检查它是否真实

在JavaScript中,除了
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?