JavaScript 中的三元运算符具有多个表达式?

发布于 2024-09-07 20:18:21 字数 233 浏览 11 评论 0原文

the_styles ? the_styles.appendTo('head'); the_styles=null : the_styles = $('.stylesheet').detach();

显然,这是无效的。注意“;”在 appendTo()the_styles=null 之间。我如何将它写在 1 行上并且仍然有多个这样的表达式?

the_styles ? the_styles.appendTo('head'); the_styles=null : the_styles = $('.stylesheet').detach();

Obviously, this isn't valid. Notice the ";" between the appendTo() and the_styles=null. How do I write it on 1 line and still have multiple expressions like that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

煮酒 2024-09-14 20:18:21

以这种方式使用逗号运算符:

the_styles ? (the_styles.appendTo('head'), the_styles=null) : the_styles =  $('.stylesheet').detach();

以下是 Mozilla 开发人员中心关于逗号运算符的描述:

当您想要在需要单个表达式的位置包含多个表达式时,可以使用逗号运算符。该运算符最常见的用法是在 for 循环中提供多个参数。

在此处了解更多信息:https://developer.mozilla.org/ en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Comma_Operator

Use the comma operator this way:

the_styles ? (the_styles.appendTo('head'), the_styles=null) : the_styles =  $('.stylesheet').detach();

Here's what the Mozilla Developer Center writes about the comma operator:

You can use the comma operator when you want to include multiple expressions in a location that requires a single expression. The most common usage of this operator is to supply multiple parameters in a for loop.

Read more here: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Comma_Operator

々眼睛长脚气 2024-09-14 20:18:21

谁需要三元运算符?

​the_styles = !the_styles && $('.stylesheet').detach()​​​​ ||
             the_styles.appendTo('head') && null;​

必须切换表达式,否则第一个表达式的 null 值将始终强制对第二个表达式 .detach() 进行求值。

聪明的代码唯一的问题是,一旦你在喝咖啡休息后回来看它,它甚至对你来说也没有任何意义。所以这要好得多:

if(the_styles) {
    the_styles.appendTo('head')
    the_styles = null;
}
else {
    the_styles = the_styles.detach('.stylesheet');
}

对我来说,即使是上面的简单版本也没有任何意义。 什么部分很明显,但是为什么要这样做呢?

Who needs the ternary operator?

​the_styles = !the_styles && $('.stylesheet').detach()​​​​ ||
             the_styles.appendTo('head') && null;​

Had to switch the expressions around as otherwise the null value of the first expression will always force the second expression .detach() to be evaluated.

The only thing about clever code is that once you come back to it after a coffee break, it won't make any sense even to you. So this is much better:

if(the_styles) {
    the_styles.appendTo('head')
    the_styles = null;
}
else {
    the_styles = the_styles.detach('.stylesheet');
}

To me, even the above simplistic version doesn't make any sense. The what part is obvious, but why is it doing that?

浊酒尽余欢 2024-09-14 20:18:21
the_styles ? (function() {the_styles.appendTo('head'); the_styles=null})() : <etc>

只需将代码块包装在 (function() {})() 中即可。

现在是最困难的部分:为什么你想这样做?也许有更好的解决方案!

the_styles ? (function() {the_styles.appendTo('head'); the_styles=null})() : <etc>

Just wrap the code block in (function() { and })().

Now for the hard part: why would you want to do this? Perhaps there's a better solution!

绮筵 2024-09-14 20:18:21

我同意glowcoder,但如果你仍然想要它:

the_styles ? function(){ the_styles.appendTo('head'); the_styles=null;}() : the_styles = $('.stylesheet').detach();

i agree with glowcoder but if you still want it:

the_styles ? function(){ the_styles.appendTo('head'); the_styles=null;}() : the_styles = $('.stylesheet').detach();
一人独醉 2024-09-14 20:18:21
the_styles ? the_styles.appendTo('head') : the_styles = $('.stylesheet').detach();

如果您覆盖它,则不需要将其清空!

the_styles ? the_styles.appendTo('head') : the_styles = $('.stylesheet').detach();

you dont need to null it if your overwriting it !

原谅我要高飞 2024-09-14 20:18:21
the_styles=the_styles || $('.stylesheet').detach(); the_styles.appendTo('head');
the_styles=the_styles || $('.stylesheet').detach(); the_styles.appendTo('head');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文