“条件” (? :) 运算符在 JavaScript 中是不是像在 C 中一样工作?

Posted

技术标签:

【中文标题】“条件” (? :) 运算符在 JavaScript 中是不是像在 C 中一样工作?【英文标题】:Does the "condition" (? :) operator work in JavaScript as in C?“条件” (? :) 运算符在 JavaScript 中是否像在 C 中一样工作? 【发布时间】:2011-05-06 18:44:06 【问题描述】:

例子:

var x, y, z;
//...
x > 100 ? y = x : z = x ;

【问题讨论】:

【参考方案1】:

这是一种不同的方法。您可以使用三元将变量选择为方括号内的字符串。

这个window 假定yz 是全局的。否则,您需要提供正确的上下文。

window[x > 100 ? 'y' : 'z'] = x;

【讨论】:

【参考方案2】:

这应该会帮助你(将来):

https://developer.mozilla.org/en/javascript/Reference/Operators/Operator_Precedence

首先将评估 > 比较,因为它的优先级为 8。?: 的优先级为 15,低于 = 的 16。这意味着三元运算符将在任何赋值之前运行(即第一个操作数,条件,将被评估,然后只选择一个分支)。

也是一个简单的测试

//x = 50;
x = 200;
x > 100 ? y = x : z = x ;
alert((typeof y)+'|'+(typeof z));

会回答你的问题。

【讨论】:

【参考方案3】:

是的,虽然运算符优先级总是很棘手,但它的工作原理是一样的,所以我建议使用括号以避免混淆。

切线相关.. 您还可以在 JavaScript 中使用 ||,类似于 C# 中的空合并运算符 ??

【讨论】:

【参考方案4】:

是的,根据conditional operator Wikipedia 文章和ECMA-262 标准(请参阅第 11.12 节)。

【讨论】:

【参考方案5】:

是的,三元运算符在 Javascript 中的工作方式与在 C、C++、C#、Java、Javascript、Perl 和 php 中的工作方式相同。

【讨论】:

【参考方案6】:

是的,它的工作原理相同,因为它具有以下基本语法

condition ? true-expression : false-expression

它只计算表达式,因此处理由条件指定的表达式的副作用。

这是关于三元运算符的 Mozilla 文档的链接

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/Conditional_Operator

【讨论】:

【参考方案7】:

我不确定这是否有效:

x > 100 ? y = x : z = x ;

但这有效:

y = x > 100 ? foo : bar ;

【讨论】:

测试过了。看起来它确实有效。 var z = 0; var y = 0; var x = 10; x > 100 ? y = x : z = x; 你得到x:10, y:0, z:10 你的例子没有完成与原始代码相同的事情【参考方案8】:

是的,三元运算符的工作方式与in Javascript 相同。您的示例结合了很多表达式,因此 precedence 可能是一个问题。您应该用括号括起来以确保优先级。

【讨论】:

以上是关于“条件” (? :) 运算符在 JavaScript 中是不是像在 C 中一样工作?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScrip实现:如何写出漂亮的条件表达式

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

JavaScrip笔记心得(持续更新)

javascript

javascrip基础以及一个计算器的小案例