javascript中if语句中的逗号[重复]

Posted

技术标签:

【中文标题】javascript中if语句中的逗号[重复]【英文标题】:comma inside if statment in javascript [duplicate] 【发布时间】:2014-09-09 17:34:31 【问题描述】:

我在 SO 中搜索过,但没有找到类似的东西。也许我使用了错误的搜索键。 当我发现这个if statment 时,我正在编辑一个javascript

    var a = location.hash.replace(/^#/, "");

    if (container = $("#content"), a) 
       ..content
     else 
        ...other code
    

第一部分container = $("#content")$("#content") 的值分配给容器,但我不明白为什么If 中有逗号。它像AND 运算符吗? if (container = $("#content") && a) 之类的东西? 它在评估什么?

【问题讨论】:

Javascript 是(到目前为止)我的主要编程语言。我以前见过那个运算符,但只有当它实际上有用时。在这种情况下,似乎只是想通过在if 语句中添加赋值来“保存一行”。在我看来,这不是很可读。虽然我想如果这是“每个字节都很重要”的库代码,但即使这样,库也可以/应该被缩小。那么为什么他们以这种方式编写代码……对我来说绝对是个谜。 感谢@ChrisCirefice,我会考虑到这一点 【参考方案1】:

JavaScript 中的逗号运算符与其他类 C 语言中的概念非常相似。这是一种将多个表达式串在一起形成一个(句法)表达式的方法。整个事物的值就是列表中最后一个表达式的值。

因此在这种情况下,container = $("#content") 被评估,然后a 被评估。整件事的价值就是a的价值。

一个很好的问题是为什么代码是这样写的。有时逗号操作符很有用,但通常它只是一种节省输入和使代码更简洁的方法。

【讨论】:

谢谢。我不知道【参考方案2】:

是逗号。

基本上它做两件事。首先是赋值,然后, 只评估a 并在if 条件下对其进行验证。

【讨论】:

谢谢!永远不要停止学习

以上是关于javascript中if语句中的逗号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

可以将逗号分隔的表达式用作 Javascript 中的 if 语句吗?

IF 语句中的 Javascript“NaN”[重复]

javascript IF语句错误[重复]

如何在javascript中评估语句if [重复]

JavaScript在if语句中等待异步函数[重复]

JavaScript 流程控制-实际案例学习if语句