【问题标题】:what do logiacal && and || do outside parantheses?逻辑 && 和 || 做什么做外括号?
【发布时间】:2014-03-16 22:43:33
【问题描述】:

我看到了这样的javascript代码

if (a_condition_is_true){
//do this;
//annd this;
var1||var2;
var3 && var4 = var5  // or somthing like that

}

所以在标题中什么是逻辑 && 和 ||做外面的花括号?? 谢谢 编辑

if(a_variable<>a_value){//is that operator (<> not equal !=)legal or not for i saw it before 
//do somthing
}

【问题讨论】:

  • 在括号内做同样的事情
  • 好吧,假设我们有问题的代码,如果 var1 为真,var2 会发生什么,如果 var3var4 不等于 var5 在执行此代码后他们会和var5一样吗???
  • 问题中的代码没有任何意义,var1||var2 并没有真正在任何地方返回结果,所以它什么也不做,var3 &amp;&amp; var4 = var5 就是所谓的无效左手分配,换句话说,这是一个语法错误。
  • 但是如果我们把所有的 vars 都变成 funcs 可能会是
  • 变量是否是返回真值/假值的函数无关紧要,您第一次编写它的方式 OR 不会在任何地方返回结果,因此它在该上下文中什么也不做,但是意思是直截了当的,IF var1 OR var2,即如果为真,则使用var1,否则使用var2,但你必须实际使用它,只是在某处输入它没有任何作用。第二个例子不管怎么扭都只是语法错误。

标签: javascript logic


【解决方案1】:

自从

var1||var2;

意思是“评估var1并使用其结果,如果为真,否则评估var2并使用其结果”,相当于

if (!var1) { var2; }

【讨论】:

  • 恕我直言,如果您将 OP 对“var”的使用替换为“表达式”,则解释会更清楚。
【解决方案2】:

在没有短路的语言中,它们什么都不做。

但是,大多数语言确实存在短路,这意味着对于 OR,如果第一个条件为真,那么它永远不会计算第二个条件。然后对于 AND,如果第一个条件为假,它永远不会计算第二个条件。

||和 && 也用作动态语言中的语法糖,其中 undefined 是错误的,例如 JavaScript。例如,如果您有一个可能为 null 的对象的属性,并且您想检查它的属性,您可以这样:

if (obj.prop1 && obj.prop1.prop2) { ... }

或者要设置默认值,您可以执行类似的操作

var j = thisMightBeNull || "default value";

【讨论】:

    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2020-01-20
    • 1970-01-01
    • 2012-08-07
    • 2014-04-29
    相关资源
    最近更新 更多