【问题标题】:how to shorten jquery syntax if-else statement?如何缩短 jquery 语法 if-else 语句?
【发布时间】:2012-04-25 16:25:35
【问题描述】:

我用了很多:

$text = $menu.jqmData('menu-text') ? 
           $menu.jqmData('menu-text') : self.options.menuTxt;

它已经是“速记”语法,但我想知道是否可以进一步减少上述行。一定有比检查 $menu.jqmData('menu-text') 更好的方法,然后再写一遍。没有吗?

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:

    更短的方法是使用双管。如果第一个是falsy,它基本上使用第二个值。

    $text = $menu.jqmData('menu-text') || self.options.menuTxt;
    

    您也可以在同一行中多次使用它。假设您有一个变量 uberMenuTxt,它优先于其他两个变量,您可以这样做。

    $text = uberMenuTxt || $menu.jqmData('menu-text') || self.options.menuTxt;
    

    基本上每次当前值为falsy时它都会继续运行,并且会在第一个不是时停止。

    【讨论】:

    • 问题:如果两者都返回值,则哪个在另一个之前。第一个,就像在普通的 if 语句中一样,对吗?
    • @frequent 是的,这就是 || (或)有效。如果第一个语句返回 true,则不再计算以下语句。
    • @gillesc - 如果您提出后期跟进问题:我现在经常使用上述语法,但我坐在一个 sn-p 上,第一个元素应该具有优先权,但在某些情况下,结果是 [] 为空。在这种情况下,脚本会中断,因为没有采用第二个后备值。问题:如果第一部分是 [],这也有效吗?
    • 这在处理文本时可能很危险,因为如果第一个分支的结果是像“0”这样的虚假值,它会给你第二个分支。
    • @frequent 你可以在这里阅读更多相关信息:sitepoint.com/javascript-truthy-falsy 了解为什么有时你会得到奇怪的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多