任何人都可以解释“ parent = parent || document;”语句吗? ,不确定它要达到什么目的?

时间:2018-12-29 04:54:47

标签: javascript

以下 jewel.dom 模块具有一些用于处理CSS类的功能。该模块还公开了$()函数,该函数只是querySelectorAll()函数的包装器。 $()函数使您可以使用CSS选择器轻松选择DOM元素,类似于jQuery中的$()函数。

jewel.dom = (function() {
    function $(path, parent) {
        parent = parent || document;
        return parent.querySelectorAll(path);
    } 
    return { $: $};
})();

2 个答案:

答案 0 :(得分:2)

它允许您有选择地传入应该从其开始querySelectorAll的父元素。如果没有提供第二个参数,则默认情况下会从文档中调用querySelectorAll。例如:

function $(path, parent) {
    parent = parent || document;
    return parent.querySelectorAll(path);
}

// Will return all divs in the document:
console.log($('div'));

const outer = document.querySelector('.outer');
// Will return all divs which are descendants of `.outer`:
console.log($('div', outer));
<div class="outer">
  <div class="inner">
  </div>
</div>

请注意,在ES6中,可以使用默认参数来简化此操作:

function $(path, parent=document) {
    return parent.querySelectorAll(path);
}

// Will return all divs in the document:
console.log($('div'));

const outer = document.querySelector('.outer');
// Will return all divs which are descendants of `.outer`:
console.log($('div', outer));
<div class="outer">
  <div class="inner">
  </div>
</div>

答案 1 :(得分:0)

如果parent为假,则使用document

这相当于说:

if(!parent) {
    parent = document;
}