如何缩短jquery语法if-else语句?

fre*_*ent 11 javascript jquery jquery-mobile

我使用了很多这些:

$text = $menu.jqmData('menu-text') ? 
           $menu.jqmData('menu-text') : self.options.menuTxt;
Run Code Online (Sandbox Code Playgroud)

它已经是"速记"语法,但我想知道,是否有可能进一步减少上述行.必须有一个更好的方法,而不是检查$ menu.jqmData('menu-text')然后再写一遍.不存在吗?

感谢帮助!

Gil*_*esC 21

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

$text = $menu.jqmData('menu-text') || self.options.menuTxt;
Run Code Online (Sandbox Code Playgroud)

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

$text = uberMenuTxt || $menu.jqmData('menu-text') || self.options.menuTxt;
Run Code Online (Sandbox Code Playgroud)

它基本上每次当前值falsy都会继续运行,并且会在第一次没有时停止.

  • @frequent是的,这是如何|| (或)有效.如果第一个语句返回true,则不再评估以下内容. (4认同)
  • @frequent你可以在这里阅读更多相关内容:http://www.sitepoint.com/javascript-truthy-falsy/了解为什么有时你会得到奇怪的结果. (2认同)