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();