2014-01-12 33 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