难以理解javascript编码

时间:2016-04-09 22:44:46

标签: javascript jquery frontend javascript-objects

我很难理解以下代码的作用。请问有谁可以帮助我理解这段代码吗?

var PnPResponsiveApp = PnPResponsiveApp || {};

PnPResponsiveApp.responsivizeSettings = function () {
    // return if no longer on Settings page
    if (window.location.href.indexOf('/settings.aspx') < 0) return;

    // find the Settings root element, or wait if not available yet
    var settingsRoot = $(".ms-siteSettings-root");
    if (!settingsRoot.length) {
        setTimeout(PnPResponsiveApp.responsivizeSettings, 100);
        return;
    }
}

2 个答案:

答案 0 :(得分:1)

<video id="video" height="120" width="160" autoplay></video>
<a id="link"></a><br>
<div id="div"></div>

上面一行确保PnPResponsiveApp变量获取旧值(如果已存在),否则设置为新对象。

var PnPResponsiveApp = PnPResponsiveApp || {};

这里创建了一个新功能。

PnPResponsiveApp.responsivizeSettings = function () {

如果当前页面的URL不是设置页面,则该功能会立即退出。

    // return if no longer on Settings page
    if (window.location.href.indexOf('/settings.aspx') < 0) return;

这会使所有元素的类别为 // find the Settings root element, or wait if not available yet var settingsRoot = $(".ms-siteSettings-root");

.ms-siteSettings-root

如果找到任何元素(如果节点列表的长度不为零),则在100毫秒内调用PnPResponsiveApp.responsivizeSettings函数。

答案 1 :(得分:1)

基本上非常简单的代码,我会解释发生了什么:

var PnPResponsiveApp = PnPResponsiveApp || {};

这是查看变量是否已经定义的非常常见的方法,如果没有,则避免抛出错误并将其等同于空对象,它在许多框架和库中使用,非常安全地检查var是否已存在...请点击此处了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

PnPResponsiveApp.responsivizeSettings = function () {};

这基本上是一个简单的函数,但附加到对象PnPResponsiveApp - 如果只是responsivizeSettings = function(){};它附加到窗口对象

 if (window.location.href.indexOf('/settings.aspx') < 0) return;

这是检查链接栏中的链接是否有settings.aspx - 如果不包含字符串,indexOf返回-1,所以如果它不是settings.aspx则返回-1小于0然后整个函数return ...第二次返回基本上返回undefined

 var settingsRoot = $(".ms-siteSettings-root");

这基本上是查找具有ms-siteSettings-root类的所有元素,并将它们等同于变量settingsRoot,它可以是单个DOM或多个...

   if (!settingsRoot.length) {

这基本上检查是否有任何DOM元素有ms-siteSettings-root类,长度返回一个Number,所以如果它不存在,则返回0,如果有返回1,2,3等等... 0是在JavaScript中等于False并且大于0等于True,所以这样我们可以检查它是否存在...

setTimeout(PnPResponsiveApp.responsivizeSettings, 100);

所以如果settingsRoot在那里,我们执行这个功能块,并且使用setTimeout我们等待100ms ... setTimeout总是以这种方式工作,setTimeout(function(),time);并在最后发生同样的回报...

希望它的信息足够......