此代码来自recursion。
部分var getElementsByAttribute = function (att, value) {
var results = [];
walk_the_DOM(document.body, function (node) {
var actual = node.nodeType === 1 && node.getAttribute(att);
if (typeof actual === 'string' &&
(actual === value || typeof value !== 'string')) {
results.push(node);
}
});
return results;
};
我不明白以下条款的要点:
typeof actual === 'string' && (actual === value || typeof value !== 'string')
它有什么不同?
typeof actual === 'string' && actual === value
答案 0 :(得分:2)
typeof actual === 'string' && (actual === value || typeof value !== 'string')
当且仅当true
是字符串且actual
或actual === value
不是字符串时,这将返回value
。
typeof actual === 'string' && actual === value
当且仅当true
是字符串且actual
时才会返回actual === value
。
换句话说,如果value
不是字符串,则第一个条件返回true,而第二个条件只有在字符串时才返回true,并且严格等于actual
。< / p>