久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

教你如何塑造JavaScript牛逼形象

如何寫(xiě)JavaScript才能逼格更高呢?怎樣才能組織JavaScript才能讓別人一眼看出你不簡(jiǎn)單呢?是否很期待別人在看完你的代碼之后感嘆一句“原來(lái)還可以這樣寫(xiě)”呢?下面列出一些在JavaScri
       如何寫(xiě)JavaScript才能逼格更高呢?怎樣才能組織JavaScript才能讓別人一眼看出你不簡(jiǎn)單呢?是否很期待別人在看完你的代碼之后感嘆一句“原來(lái)還可以這樣寫(xiě)”呢?下面列出一些在JavaScript時(shí)的裝逼技巧。

1. 匿名函數(shù)的N種寫(xiě)法

       你知道“茴”的四種寫(xiě)法嗎?ε=(?д?`*)??… 扯淡,但你或許不知道匿名函數(shù)的好幾種寫(xiě)法。一般情況下寫(xiě)匿名函數(shù)是這樣的:
  1. (function(){})();
復(fù)制代碼
       但下面幾種寫(xiě)法也是可以的:
  1. !function(){}();
  2. +function(){}();
  3. -function(){}();
  4. ~function(){}();
  5. ~(function(){})();
  6. void function(){}();
  7. (function(){}());
復(fù)制代碼
       其實(shí)細(xì)看可以看出規(guī)律,因?yàn)?-!~這些具有極高的優(yōu)先級(jí),所以右邊的函數(shù)聲明加上括號(hào)的部分(實(shí)際上就是函數(shù)執(zhí)行的寫(xiě)法)就直接執(zhí)行了。當(dāng)然,這樣的寫(xiě)法,沒(méi)有什么區(qū)別,純粹看裝逼程度。

2. 另外一種undefined

       從來(lái)不需要聲明一個(gè)變量的值是undefined,因?yàn)镴avaScript會(huì)自動(dòng)把一個(gè)未賦值的變量置為undefined。所有如果你在代碼里這么寫(xiě),會(huì)被鄙視的:
  1. var data = undefined;
復(fù)制代碼
       但是如果你就是強(qiáng)迫癥發(fā)作,一定要再聲明一個(gè)暫時(shí)沒(méi)有值的變量的時(shí)候賦上一個(gè)undefined。那你可以考慮這么做:
  1. var data = void 0; // undefined
復(fù)制代碼
       void在JavaScript中是一個(gè)操作符,對(duì)傳入的操作不執(zhí)行并且返回undefined。void后面可以跟()來(lái)用,例如void(0),看起來(lái)是不是很熟悉?沒(méi)錯(cuò),在HTML里阻止帶href的默認(rèn)點(diǎn)擊操作時(shí),都喜歡把href寫(xiě)成javascript:void(0),實(shí)際上也是依靠void操作不執(zhí)行的意思。

       當(dāng)然,除了出于裝逼的原因外,實(shí)際用途上不太贊成使用void,因?yàn)関oid的出現(xiàn)是為了兼容早起ECMAScript標(biāo)準(zhǔn)中沒(méi)有undefined屬性。void 0的寫(xiě)法讓代碼晦澀難懂。

3. 拋棄你的if和else

       當(dāng)JS代碼里有大量的條件邏輯判斷時(shí),那代碼看起來(lái)多可怕:
  1. if () {
  2.     // ...
  3. } else if () {
  4.     // ...
  5. } else if () {
  6.     // ...
  7. } else {
  8.     // ...
  9. }
復(fù)制代碼
       不用我說(shuō)你都猜到用什么語(yǔ)法來(lái)簡(jiǎn)化if-else了。沒(méi)錯(cuò),用||和&&,很簡(jiǎn)單的原理就不用說(shuō)啦。值得一提的是,有時(shí)候用!!操作符也能簡(jiǎn)化if-else模式。例如這樣:
  1. // 普通的if-else模式
  2. var isValid = false;
  3. if (value && value !== 'error') {
  4.     isValid = true;
  5. }
  6. // 使用!!符號(hào)
  7. var isValid = !!(value && value !== 'error');
復(fù)制代碼
       “!”是取反操作,兩個(gè)“!”自然是負(fù)負(fù)得正了。

4. 不加分號(hào)

       關(guān)于JavaScript要不要加分號(hào)的爭(zhēng)論已經(jīng)吵了好幾年。Google的JavaScript語(yǔ)法指南告訴我們要加分號(hào),很多JavaScript語(yǔ)法書(shū)籍也告訴我們加上分號(hào)更安全。然而,分號(hào)加不加,全靠個(gè)人對(duì)代碼的寫(xiě)法,你確信寫(xiě)得足夠安全的話,不加分號(hào)顯得更加高大上。

5. 趕上ES6的早班車(chē)

       ES6即將在年底正式發(fā)布,趕時(shí)髦的開(kāi)發(fā)者們,趕快在自己的代碼里用起來(lái)。用上module聲明,寫(xiě)寫(xiě)class,搗鼓一下Map,這些都會(huì)讓你的代碼逼格更高。神馬?你都不會(huì)用?那也好歹在代碼頭部加上一個(gè)ES5的”use strict”;呀。

6. 添加AMD模塊支持

       給你寫(xiě)的代碼聲明一下AMD模塊規(guī)范,這樣別人就可以直接通過(guò)AMD的規(guī)范來(lái)加載你的模塊了,如果別人沒(méi)有通過(guò)規(guī)范來(lái)加載你的模塊,你也可以優(yōu)雅地返回一個(gè)常規(guī)的全局對(duì)象。來(lái)看看jQueryUI的寫(xiě)法:
  1. (function( factory ) {
  2.     if ( typeof define === "function" && define.amd ) {
  3.         // AMD. Register as an anonymous module.
  4.         define( [ "jquery" ], factory );
  5.     } else {
  6.         // Browser globals
  7.         factory( jQuery );
  8.     }
  9. }(function( $ ) {
  10.     // 這里放模塊代碼
  11.     return $.widget;
  12. }));
復(fù)制代碼
       就用它來(lái)包裹你的實(shí)際代碼吧,保證別人一看代碼就知道你是個(gè)專(zhuān)業(yè)的開(kāi)發(fā)者。

7. Function構(gòu)造函數(shù)

       很多JavaScript教程都告訴我們,不要直接用內(nèi)置對(duì)象的構(gòu)造函數(shù)來(lái)創(chuàng)建基本變量,例如var arr = new Array(2); 的寫(xiě)法就應(yīng)該用var arr = [1, 2];的寫(xiě)法來(lái)取代。但是,F(xiàn)unction構(gòu)造函數(shù)(注意是大寫(xiě)的Function)有點(diǎn)特別。Function構(gòu)造函數(shù)接受的參數(shù)中,第一個(gè)是要傳入的參數(shù)名,第二個(gè)是函數(shù)內(nèi)的代碼(用字符串來(lái)表示)。
  1. var f = new Function('a', 'alert(a)'); f('test'); // 將會(huì)彈出窗口顯示test
復(fù)制代碼
       或許大家疑惑了,你這樣繞著寫(xiě),跟function f(a) {alert(a);}比有什么好處呢?
事實(shí)上在某種情況下是有好處的,比如不能用eval的時(shí)候,你需要傳入字符串內(nèi)容來(lái)創(chuàng)建一個(gè)函數(shù)的時(shí)候。在一些JavaScript模板語(yǔ)言的解析,和字符串轉(zhuǎn)換json對(duì)象的時(shí)候比較實(shí)用。

8. 用原生Dom接口不用jQuery

       一個(gè)傲嬌的前端工程師是不需要jQuery的,前提是你經(jīng)得起折騰。實(shí)際上,幾乎所有的jQuery方法都可以用同樣的Dom原生接口來(lái)實(shí)現(xiàn),因?yàn)檫@貨本來(lái)就是用原生接口實(shí)現(xiàn)的嘛,哈哈。怎樣做到不用jQuery(也叫jQuery-free)呢?阮老師的博文《如何做到 jQuery-free?》 給我們很好的講解了做法。依賴于querySelector和querySelectorAll這兩個(gè)現(xiàn)代瀏覽器的接口,可以實(shí)現(xiàn)跟jQuery同樣方便和同樣效率的Dom查找,而且其他的類(lèi)似Ajax和CSS的接口同樣也可以把原生方法做一些兼容方面的包裝即可做到j(luò)Query-free。

總結(jié)

       上述所有的JavaScript裝逼寫(xiě)法,一些是為了程序易懂或者效率提高的語(yǔ)法糖,這樣的做法是比較可取的,比如前面所說(shuō)的省略if-else的做法;而有些寫(xiě)法則容易造成代碼晦澀難懂或者效率偏低,例如上面說(shuō)的void 0的寫(xiě)法,實(shí)際上不可取。JavaScript語(yǔ)法上靈活,讓大家對(duì)同一個(gè)功能有很多種不同的寫(xiě)法,寫(xiě)法上的優(yōu)化是對(duì)程序結(jié)構(gòu)和代碼維護(hù)有很大幫助的。所以,裝逼得裝得好看。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會(huì)達(dá)到,所以這部分不是開(kāi)發(fā)者能夠決定的,開(kāi)發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個(gè)自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對(duì)JavascriptAPI的擴(kuò)展。,HTML5中國(guó),中國(guó)最大的HTML5中文門(mén)戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡(jiǎn)單移植到移動(dòng)端,他們覬覦移動(dòng)原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來(lái)的豐富的手勢(shì)系統(tǒng)。HTML5 沒(méi)有提
你想要在自己網(wǎng)站上分享一個(gè)產(chǎn)品,或者是一個(gè)作品集,又或者僅僅只是一個(gè)靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來(lái)有吸引力,專(zhuān)業(yè),或者至少得看起來(lái)像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計(jì)流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專(zhuān)門(mén)做了一個(gè)講義。同時(shí),也讓我意外的收到了非常好反饋和認(rèn)!這是對(duì)我的極大鼓勵(lì)!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開(kāi)發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開(kāi)發(fā)、前端/H5優(yōu)化、全棧/全端開(kāi)發(fā)、研究實(shí)驗(yàn)、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 久久成人精品视频 | 久久久成人动漫 | 国内自拍偷拍一区 | 欧美日韩中| 羞羞视频在线观看网站 | 中文字幕高清 | 欧美成人a∨高清免费观看 欧美日韩中 | 一区二区三区四区电影 | 亚洲精品乱码久久久久久黑人 | 99re视频在线 | 九九九久久国产免费 | 国内av在线 | 成人在线视频网 | 九九热免费在线观看 | 久草青青草| 精品国产乱码久久久久久88av | 国产毛片久久久久久久久春天 | 最新中文字幕久久 | 欧美一区二| 亚洲成年影院 | 亚洲日韩中文字幕一区 | 日本一道本视频 | 国产精品免费一区二区 | 亚洲精品九九 | 亚州影院 | 91高清免费 | av天天干 | 国产91av视频在线观看 | 成人影院av | 噜噜噜噜狠狠狠7777视频 | 欧美性生活网 | 精品一级 | 91在线精品一区二区 | 成人精品久久日伦片大全免费 | 日本精品视频 | 免费久久久久久 | 亚洲 欧美 日韩 精品 | 96国产精品久久久久aⅴ四区 | 精品av天堂毛片久久久借种 | 国产精品中文字幕一区二区三区 | 成人a在线观看 |