Javascript “的目的是什么?”;情况及&;func();什么时候用作陈述?

Javascript “的目的是什么?”;情况及&;func();什么时候用作陈述?,javascript,syntax,operators,Javascript,Syntax,Operators,我最近遇到了以下[有效的]句法结构: d <= f && func3(); 正如你所猜测的,它的意思和 if (var1 <= var2) someFunction(); if(var1 是a>b?如果为true,则运行func1()。如果不是true,则运行func2() 如果d不超过f,则 d <= f && func3(); d基本上是对布尔&&运算符进行黑客攻击。人们有时使用&&和|运算符作为条件的快捷方式。这是可能的,因为这些运算

我最近遇到了以下[有效的]句法结构:

d <= f && func3();

正如你所猜测的,它的意思和

if (var1 <= var2) someFunction();
if(var1
是
a>b
?如果为true,则运行
func1()
。如果不是true,则运行
func2()

如果
d
不超过
f
,则

d <= f && func3();

d基本上是对布尔&&运算符进行黑客攻击。人们有时使用
&&
|
运算符作为条件的快捷方式。这是可能的,因为这些运算符的行为:

  • &&仅当第一个操作数为true时,才会检查第二个操作数,例如
    true&&thisWillAlwaysBeExecuted()
    false&&thiswillneverbexecuted
  • ||只有当第一个操作数为false时,运算符才会检查第二个操作数,例如
    true | | thiswillneverbeecuted()
    false | | thiswillaysbeexecuted()

我认为这是一种不好的做法,因为它隐藏了意图。该表达式的意思是:“比较这两个操作数”,意图是“如果满足某些条件,执行此任务”。我真的怀疑性能是否有任何提高,以及“它的字符数更少”的论点发明第一个IDE时停止工作。

如果
d
f
是非数字(
NaN
,非数字字符串等),则这两个测试都是
d>f
df?a>b?func1():func2():d任何编写让你坐在那里搔头的代码的人都应该被揍一顿。这几乎值得发布到DailyWTF。也许是为了解决“d”和“f”都是
NaN
:-)这看起来像是谷歌闭包编译器这样的代码精简器的漂亮打印输出。迷你程序通常将
if
语句转换为
&&
|
?:操作以节省空间。是的,我认为问题是,为什么还要麻烦再次比较“d”和“f”,因为如果你达到了这一点,“d”一定不大于“f”.@Pointy-我猜不出我在这里看到的一些逻辑的原因:)只是试图写出一系列条件语句。
@MikeSamuel-我想我在理解中遗漏了一些东西:
n>9 | n@jsfiddle,当然,因为ToNumber
('abc')
是NaN。也许我误解了你的帖子,因为我错过了“非此即彼”。我是否应该解释“d或f都是非数字的”以排除两者都是非数字的情况,如
“abc”>“bcd”| |“abc”
if (var1 <= var2) someFunction();
d > f ? a > b ? func1() : func2() : d <= f && func3();
a > b ? func1() : func2()
d <= f && func3();
d > f ? a > b ? func1() : func2() : d <= f && func3();