【发布时间】:2014-11-12 03:52:07
【问题描述】:
我正在阅读 jQuery source code for jQuery.filter 并偶然发现了这一堆
jQuery.filter = function( expr, elems, not ) {
var elem = elems[ 0 ];
if ( not ) {
expr = ":not(" + expr + ")";
}
return elems.length === 1 && elem.nodeType === 1 ?
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
return elem.nodeType === 1;
}));
};
总之我们有
return "a" && "b" ? "c" ? "d" : "e" : "f";
每个字符串都可以是不同的值
我的问题不是如何破译这段代码,而是我的大脑正在纠结,试图评估这里使用的逻辑。
谁能帮我理解 JavaScript 如何评估这个返回表达式?
【问题讨论】:
-
显然
c ? d : e必须是一个子表达式(没有其他有意义的方式来解释这些标记)。因此,真正归结为a && b ? x : y是(a && b) ? x : y还是a && (b ? x : y)。但这肯定可以通过简单的 Google 搜索“javascript 优先级”或类似内容来解决? -
jQuery 中的某个人应该学会使用大括号,尽管它在框架大小上花费了 2 位...
-
另外,代码格式实际上在这种情况下很容易。
标签: javascript jquery ternary-operator