Javascript中的奇怪条款好的部分

时间:2014-01-17 19:19:16

标签: javascript clause

此代码来自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

1 个答案:

答案 0 :(得分:2)

typeof actual === 'string' && (actual === value || typeof value !== 'string')

当且仅当true是字符串且actualactual === value不是字符串时,这将返回value

typeof actual === 'string' && actual === value

当且仅当true是字符串且actual时才会返回actual === value

换句话说,如果value不是字符串,则第一个条件返回true,而第二个条件只有在字符串时才返回true,并且严格等于actual。< / p>