pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

教你如何塑造JavaScript牛逼形象

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

1. 匿名函數的N種寫法

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

2. 另外一種undefined

       從來不需要聲明一個變量的值是undefined,因為JavaScript會自動把一個未賦值的變量置為undefined。所有如果你在代碼里這么寫,會被鄙視的:
  1. var data = undefined;
復制代碼
       但是如果你就是強迫癥發作,一定要再聲明一個暫時沒有值的變量的時候賦上一個undefined。那你可以考慮這么做:
  1. var data = void 0; // undefined
復制代碼
       void在JavaScript中是一個操作符,對傳入的操作不執行并且返回undefined。void后面可以跟()來用,例如void(0),看起來是不是很熟悉?沒錯,在HTML里阻止帶href的默認點擊操作時,都喜歡把href寫成javascript:void(0),實際上也是依靠void操作不執行的意思。

       當然,除了出于裝逼的原因外,實際用途上不太贊成使用void,因為void的出現是為了兼容早起ECMAScript標準中沒有undefined屬性。void 0的寫法讓代碼晦澀難懂。

3. 拋棄你的if和else

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

4. 不加分號

       關于JavaScript要不要加分號的爭論已經吵了好幾年。Google的JavaScript語法指南告訴我們要加分號,很多JavaScript語法書籍也告訴我們加上分號更安全。然而,分號加不加,全靠個人對代碼的寫法,你確信寫得足夠安全的話,不加分號顯得更加高大上。

5. 趕上ES6的早班車

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

6. 添加AMD模塊支持

       給你寫的代碼聲明一下AMD模塊規范,這樣別人就可以直接通過AMD的規范來加載你的模塊了,如果別人沒有通過規范來加載你的模塊,你也可以優雅地返回一個常規的全局對象。來看看jQueryUI的寫法:
  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. }));
復制代碼
       就用它來包裹你的實際代碼吧,保證別人一看代碼就知道你是個專業的開發者。

7. Function構造函數

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

8. 用原生Dom接口不用jQuery

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

總結

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

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 清水-铝合金-建筑模板厂家-木模板价格-铝模板生产「五棵松」品牌 | 点焊机-缝焊机-闪光对焊机-电阻焊设备生产厂家-上海骏腾发智能设备有限公司 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 北京乾茂兴业科技发展有限公司 | 钢骨架轻型板_膨石轻型板_钢骨架轻型板价格_恒道新材料 | 上海logo设计 | 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 实木家具_实木家具定制_全屋定制_美式家具_圣蒂斯堡官网 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 微学堂-电动能源汽车评测_电动车性能分享网 | 老城街小面官网_正宗重庆小面加盟技术培训_特色面馆加盟|牛肉拉面|招商加盟代理费用多少钱 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 吹塑加工_大型吹塑加工_滚塑代加工-莱力奇吹塑加工有限公司 | 上海办公室装修,写字楼装修—启鸣装饰设计工程有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | U拓留学雅思一站式服务中心_留学申请_雅思托福培训 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | 广东青藤环境科技有限公司-水质检测 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | nalgene洗瓶,nalgene量筒,nalgene窄口瓶,nalgene放水口大瓶,浙江省nalgene代理-杭州雷琪实验器材有限公司 | 江苏密集柜_电动_手动_移动_盛隆柜业江苏档案密集柜厂家 | 宁波普瑞思邻苯二甲酸盐检测仪,ROHS2.0检测设备,ROHS2.0测试仪厂家 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 |