2014-01-12 31 views
1

我正在研究一些HTML5模板,我正在看互联网上的一些例子,其他人是如何做到的,因为我想把我的作品放在主题森林,我发现代码的和平其中一个例子,我真的不能得到它如何工作。所以,请,如果有人可以帮助我理解这一点,将是巨大的Modernizr javascript code explanation

var pd = {}, 
verboseBuild = !0, 
screenXs = 480, 
ltIE9 = !1; 

/* Modernizer */ 

!$("html").is(".lt-ie9") || (ltIE9 = !0), 

Modernizr.addTest("ipad", function() { 
    return !!navigator.userAgent.match(/iPad/i); 
}), 
Modernizr.addTest("iphone", function() { 
    return !!navigator.userAgent.match(/iPhone/i); 
}), 
Modernizr.addTest("ipod", function() { 
    return !!navigator.userAgent.match(/iPod/i); 
}), 
Modernizr.addTest("appleios", function() { 
    return Modernizr.ipad || Modernizr.ipod || Modernizr.iphone; 
}), 
Modernizr.appleios && $("html").addClass("ios-device"), 
    !verboseBuild || console.log("Starting builds:"), 
    $(document).ready(function() { 
     !verboseBuild || console.log("-- starting proton.common build"), 
     pd.common.build(); 
    }), 

,任何人都可以解释什么verbosebuild!= 0意味着和itE9!= 1吗?

谢谢!

回答

1

好:

  • !0仅仅是true
  • !1的别名只是false
  • 简单的话!!<something>一个别名,蒙上<something>为布尔(总是返回truefalse

(顺便说一句,我不喜欢我不知道他们的开发人员为什么会做前两个的原因,在我看来,这将是微型优化,不应该这样做)。

因此,举例来说:

ltIE9 = !1意味着IE版本为9或更高

希望这有助于。干杯

+0

只是好奇,'!1'是一个微观优化? JS不是必须先将'1'评估为'true'吗?我会认为'错误'会比'!1'快# – Adam

+0

我不确定是否是这样,但我想不出其他原因。你为什么认为他们做到了? –

+0

误导自我,是我的看法。经验丰富的开发人员会知道写这篇文章的开发人员只是在吹热气,新手开发人员会被抽象和不寻常的语法“打动”(不幸),并且认为写这篇文章的开发人员必须知道他们不知道的东西。最终,'!0'和'!1'绝对是无稽之谈。 – Adam