精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript語法中12個(gè)需要繞開的陷阱

開發(fā) 前端
JavaScript語言運(yùn)行在瀏覽器端,是很重要的語言,但卻有很多糟粕,因?yàn)?995年Brendan Eich設(shè)計(jì)這種語言的時(shí)候,只用了三個(gè)月,很多語言特性沒有經(jīng)過深思熟慮,就推向了市場(chǎng)。本文介紹了12種應(yīng)該避免的JavaScript語法。

本文節(jié)選自阮一峰的網(wǎng)絡(luò)日志http://www.ruanyifeng.com/blog/,原文標(biāo)題為《12種不宜使用的Javascript語法》。原文是阮一峰對(duì)《Javascript語言精粹》一書的讀后感。該書的作者是Douglas Crockford,他是目前世界上最精通Javascript的人之一,也是Json格式的創(chuàng)造者。他認(rèn)為Javascript有很多糟粕。因?yàn)?995年Brendan Eich設(shè)計(jì)這種語言的時(shí)候,只用了三個(gè)月,很多語言特性沒有經(jīng)過深思熟慮,就推向了市場(chǎng)。結(jié)果等到人們意識(shí)到這些問題的時(shí)候,已經(jīng)有100萬程序員在使用它了,不可能再大幅修改語言本身了。所以,Douglas Crockford決定,他要告訴大家,Javascript中哪些部分是精粹,哪些部分是糟粕和雞肋。阮一峰將書中附錄的12種應(yīng)該避免的JavaScript語法在文中貼出共享,內(nèi)容如下:

1. ==

Javascript有兩組相等運(yùn)算符,一組是==和!=,另一組是===和!==。前者只比較值的相等,后者除了值以外,還比較類型是否相同。

請(qǐng)盡量不要使用前一組,永遠(yuǎn)只使用===和!==。因?yàn)?=默認(rèn)會(huì)進(jìn)行類型轉(zhuǎn)換,規(guī)則十分難記。如果你不相信的話,請(qǐng)回答下面五個(gè)判斷式的值是true還是false:

  1.   false == 'false' 
  2.  
  3.   false == undefined  
  4.  
  5.   false == null 
  6.  
  7.   null == undefined  
  8.  
  9.   0 == '' 
  10.  

前三個(gè)是false,后兩個(gè)是true。

2. with

with的本意是減少鍵盤輸入。比如

  1.   obj.a = obj.b;  
  2.  
  3.   obj.c = obj.d;  
  4.  

可以簡寫成

  1.   with(obj) {  
  2.     a = b;  
  3.     c = d;  
  4.   }  
  5.  

但是,在實(shí)際運(yùn)行時(shí),解釋器會(huì)首先判斷obj.b和obj.d是否存在,如果不存在的話,再判斷全局變量b和d是否存在。這樣就導(dǎo)致了低效率,而且可能會(huì)導(dǎo)致意外,因此***不要使用with語句。

3. eval

eval用來直接執(zhí)行一個(gè)字符串。這條語句也是不應(yīng)該使用的,因?yàn)樗行阅芎桶踩缘膯栴},并且使得代碼更難閱讀。

eval能夠做到的事情,不用它也能做到。比如

  1.   eval("myValue = myObject." + myKey + ";");  
  2.  

可以直接寫成

  1.   myValue = myObject[myKey];  
  2.  

至于ajax操作返回的json字符串,可以使用官方網(wǎng)站提供的解析器json_parse.js運(yùn)行。

4. continue

這條命令的作用是返回到循環(huán)的頭部,但是循環(huán)本來就會(huì)返回到頭部。所以通過適當(dāng)?shù)臉?gòu)造,完全可以避免使用這條命令,使得效率得到改善。

5. switch 貫穿

switch結(jié)構(gòu)中的case語句,默認(rèn)是順序執(zhí)行,除非遇到break,return和throw。有的程序員喜歡利用這個(gè)特點(diǎn),比如

  1.   switch(n) {  
  2.     case 1:  
  3.     case 2:  
  4.       break;  
  5.   }  
  6.  

這樣寫容易出錯(cuò),而且難以發(fā)現(xiàn)。因此建議避免switch貫穿,凡是有case的地方,一律加上break。

  1.   switch(n) {  
  2.     case 1:  
  3.       break;  
  4.     case 2:  
  5.       break;  
  6.   }  
  7.  

6. 單行的塊結(jié)構(gòu)

if、while、do和for,都是塊結(jié)構(gòu)語句,但是也可以接受單行命令。比如

  1.   if (ok) t = true;  
  2.  

甚至寫成

  1.   if (ok)  
  2.     t = true;  
  3.  

這樣不利于閱讀代碼,而且將來添加語句時(shí)非常容易出錯(cuò)。建議不管是否只有一行命令,都一律加上大括號(hào)。

  1.   if (ok){  
  2.     t = true;  
  3.   }  
  4.  

7. ++和--

遞增運(yùn)算符++和遞減運(yùn)算符--,直接來自C語言,表面上可以讓代碼變得很緊湊,但是實(shí)際上會(huì)讓代碼看上去更復(fù)雜和更晦澀。因此為了代碼的整潔性和易讀性,不用為好。

8. 位運(yùn)算符

Javascript完全套用了Java的位運(yùn)算符,包括按位與&、按位或|、按位異或^、按位非~、左移<<、帶符號(hào)的右移>>和用0補(bǔ)足的右移>>>。

這套運(yùn)算符針對(duì)的是整數(shù),所以對(duì)Javascript完全無用,因?yàn)镴avascript內(nèi)部,所有數(shù)字都保存為雙精度浮點(diǎn)數(shù)。如果使用它們的話,Javascript不得不將運(yùn)算數(shù)先轉(zhuǎn)為整數(shù),然后再進(jìn)行運(yùn)算,這樣就降低了速度。而且“按位與運(yùn)算符”&同“邏輯與運(yùn)算符”&&,很容易混淆。

9. function語句

在Javascript中定義一個(gè)函數(shù),有兩種寫法:

  1.   function foo() { }  
  2.  

  1.   var foo = function () { }  
  2.  

兩種寫法完全等價(jià)。但是在解析的時(shí)候,前一種寫法會(huì)被解析器自動(dòng)提升到代碼的頭部,因此違背了函數(shù)應(yīng)該先定義后使用的要求,所以建議定義函數(shù)時(shí),全部采用后一種寫法。

10. 基本數(shù)據(jù)類型的包裝對(duì)象

Javascript的基本數(shù)據(jù)類型包括字符串、數(shù)字、布爾值,它們都有對(duì)應(yīng)的包裝對(duì)象String、Number和Boolean。所以,有人會(huì)這樣定義相關(guān)值:

  1.   new String("Hello World");  
  2.  
  3.   new Number(2000);  
  4.  
  5.   new Boolean(false);  
  6.  

#t#這樣寫完全沒有必要,而且非常費(fèi)解,因此建議不要使用。

另外,new Object和new Array也不建議使用,可以用{}和[]代替。

11. new語句

Javascript是世界上***個(gè)被大量使用的支持Lambda函數(shù)的語言,本質(zhì)上屬于與Lisp同類的函數(shù)式編程語言。但是當(dāng)前世界,90%以上的程序員都是使用面向?qū)ο缶幊獭榱丝拷髁鳎琂avascript做出了妥協(xié),采納了類的概念,允許根據(jù)類生成對(duì)象。

類是這樣定義的:

  1.   var Cat = function (name) {  
  2.     this.name = name;  
  3.     this.saying = 'meow' ;  
  4.   }  
  5.  

然后,再生成一個(gè)對(duì)象

  1.   var myCat = new Cat('mimi');  
  2.  

這種利用函數(shù)生成類、利用new生成對(duì)象的語法,其實(shí)非常奇怪,一點(diǎn)都不符合直覺。而且,使用的時(shí)候,很容易忘記加上new,就會(huì)變成執(zhí)行函數(shù),然后莫名其妙多出幾個(gè)全局變量。所以,建議不要這樣創(chuàng)建對(duì)象,而采用一種變通方法。

Douglas Crockford給出了一個(gè)函數(shù):

  1.   Object.beget = function (o) {  
  2.     var F = function (o) {};  
  3.     F.prototype = o ;  
  4.     return new F;  
  5.   };  
  6.  

創(chuàng)建對(duì)象時(shí)就利用這個(gè)函數(shù),對(duì)原型對(duì)象進(jìn)行操作:

  1.   var Cat = {  
  2.     name:'',  
  3.     saying:'meow' 
  4.   };  
  5.  
  6.   var myCat = Object.beget(Cat);  
  7.  

對(duì)象生成后,可以自行對(duì)相關(guān)屬性進(jìn)行賦值:

  1.   myCat.name = 'mimi';  
  2.  

12. void

在大多數(shù)語言中,void都是一種類型,表示沒有值。但是在Javascript中,void是一個(gè)運(yùn)算符,接受一個(gè)運(yùn)算數(shù),并返回undefined。

  1.   void 0; // undefined  
  2.  

這個(gè)命令沒什么用,而且很令人困惑,建議避免使用。

責(zé)任編輯:yangsai 來源: 阮一峰的博客
相關(guān)推薦

2019-05-23 11:42:04

Java語法糖編程語言

2012-01-05 10:19:43

JavaScript

2016-01-11 10:56:42

BYOD自帶設(shè)備

2022-10-11 07:20:56

YAML字符串語言

2015-02-05 08:48:07

云遷移云資源管理

2018-11-18 16:31:14

Kubernetes監(jiān)控容器

2016-12-16 14:57:19

2020-09-30 08:06:39

JavaScript基礎(chǔ)編程

2021-04-01 17:04:34

Javascript語法數(shù)組

2021-10-15 10:04:37

云計(jì)算安全云服務(wù)

2014-05-06 15:11:46

云計(jì)算云遷移

2020-03-05 08:58:42

JavaScript語言開發(fā)

2020-03-05 21:40:49

Javascript前端

2024-06-11 00:09:00

JavaScript模式變量

2016-05-10 10:16:13

JavaScript技巧

2022-12-02 10:11:50

2018-05-13 15:22:02

程序員職業(yè)陷阱

2014-02-01 21:31:10

JavaScriptJS框架

2020-08-11 08:11:40

JavaScript開發(fā)技術(shù)

2020-12-15 09:30:51

GitHub 技術(shù) JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

风间由美性色一区二区三区四区| www.69av| 99色精品视频| 中文字幕一区二区人妻| 99精品国产高清一区二区麻豆| 国产亚洲成aⅴ人片在线观看| 美女av一区二区| 日韩精品伦理第一区| 国产无套内射又大又猛又粗又爽| 日韩一区二区三区免费视频| 成人动漫在线一区| 久久影院模特热| 久久久久国产一区| 男人的天堂在线| 8x国产一区二区三区精品推荐| 日本一区二区免费在线| 欧美一级在线亚洲天堂| 久久久久亚洲AV成人网人人小说| 免费观看成人高潮| 日本特黄久久久高潮| 亚洲人成网站色ww在线| 分分操这里只有精品| av在线免费在线观看| 成人在线视频免费观看| 欧美综合亚洲图片综合区| 国产一区二区久久久| 五月天婷婷丁香| 国产成人一二片| 欧美午夜一区二区三区| 日韩欧美视频一区二区三区四区 | 四虎久久免费| 免费一区视频| 日韩成人中文电影| 黄色影院一级片| 日韩一二三四| 久久精选视频| 国产亚洲精品一区二区| 亚洲一区二区蜜桃| 日本电影全部在线观看网站视频 | 欧美色电影在线| 欧美一区二区高清在线观看| 国产99免费视频| 日韩大片在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 久久久91精品国产| 爱爱爱爱免费视频| 呦呦在线视频| 成人美女视频在线观看18| 97精品视频在线观看| 国产高清自拍视频| 免费电影日韩网站| 亚洲欧洲精品一区二区三区| 91久久国产婷婷一区二区| 日本午夜在线观看| 国产伦乱精品| 欧美tk—视频vk| 妺妺窝人体色www在线小说| 白白色在线观看| 国产午夜久久久久| 欧美日韩在线观看一区| 亚洲天堂久久久久| 欧美日韩1区| 日韩精品中文字幕有码专区| 在线免费观看视频黄| 日韩高清在线| 欧美日韩一区二区三区免费看| 男女无套免费视频网站动漫| 国产一区二区三区朝在线观看| 狠狠躁夜夜躁人人躁婷婷91| 亚洲在线播放电影| 天天摸天天碰天天爽天天弄| 美女视频一区在线观看| 久久久久国产精品免费| 国产精品久久久视频| 97久久综合区小说区图片区| 欧美一二三四区在线| 日本网站免费在线观看| 国产剧情在线| 国产亚洲一区字幕| 四虎一区二区| 婷婷国产在线| 国产不卡免费视频| 国产精品免费一区豆花| 日本a在线观看| 亚洲麻豆一区| 久久精品视频99| 欧美丰满艳妇bbwbbw| 欧美色图在线播放| 久久精品2019中文字幕| 69av.com| 久久不射2019中文字幕| 国产精品中文在线| 日本中文字幕第一页| 欧美91大片| 综合欧美国产视频二区| 亚洲国产果冻传媒av在线观看| 国产精品亚洲一区二区在线观看| 欧美主播一区二区三区美女| 国产三级国产精品国产专区50| 无码小电影在线观看网站免费| 一区二区三区在线观看动漫| 二级片在线观看| 永久av在线| 亚洲永久免费视频| www国产无套内射com| 蜜桃视频在线观看www社区 | 精东粉嫩av免费一区二区三区| 66m—66摸成人免费视频| 欧美成人综合色| 蜜桃久久av| av成人在线电影| 国产黄a三级三级看三级| 久久午夜国产精品| 久久综合一区| 无码国产伦一区二区三区视频| 高清在线不卡av| 欧美一区二区三区四区夜夜大片 | 中文字幕日本乱码精品影院| 国产成人精品视频免费看| 国产免费av国片精品草莓男男| 国产午夜精品视频| 日韩福利片在线观看| 国产一区二区毛片| 国产日韩在线精品av| 在线播放成人av| 97久久精品人人爽人人爽蜜臀| 国产成人亚洲欧美| 二区三区在线视频| 成人丝袜18视频在线观看| 日韩中文字幕av在线| 国模精品视频| 91福利区一区二区三区| 欧美日韩大尺度| 少妇熟女一区二区| 色老头在线一区二区三区| 欧美日韩激情小视频| 亚洲理论中文字幕| 伊人久久大香线蕉av超碰| 中文字幕欧美在线| 国产成人无码专区| 毛片一区二区三区| 亚洲综合色av| 天堂资源中文在线| 亚洲成av人片一区二区| 精品一区二区中文字幕| 高潮按摩久久久久久av免费| 免费av在线一区| 99er热精品视频| 波多野结衣中文字幕一区二区三区| 黄色免费高清视频| 国内不卡的一区二区三区中文字幕| 欧美美女网站色| 337p日本欧洲亚洲大胆张筱雨| 欧美wwwsss9999| 正在播放欧美一区| 欧美成人精品网站| 国产.欧美.日韩| 成人免费a级片| 色天使综合视频| 日韩欧美成人一区| 日韩人妻无码精品综合区| 天天射天天综合网| 午夜精品视频网站| 欧美一级免费片| 国产精品麻豆99久久久久久| 国产精品裸体瑜伽视频| 国内自拍亚洲| 亚洲国产精品久久久久秋霞蜜臀| 高清国产在线观看| 1024精品一区二区三区| 国产精选在线观看91| 在线免费看av| 欧美午夜激情视频| 国产裸体视频网站| 日韩一区二区三区免费播放| 成人精品一区二区三区电影免费| 亚州视频一区二区三区| 色综合久久久久久久| 污网站免费观看| 在线亚洲免费| 国产精品日韩一区二区| 色一区二区三区| 中国人与牲禽动交精品| 精品人妻一区二区三区麻豆91| 久久精品人人爽人人爽| 日本激情综合网| 亚洲天堂黄色| 91超碰在线免费观看| av播放在线观看| 日韩一区二区免费视频| 国产91精品一区| jlzzjlzz国产精品久久| 国产91在线亚洲| 小说区图片区色综合区| 97精品伊人久久久大香线蕉| 99青草视频在线播放视| 欧美大片在线观看一区| 精品久久久久久久久久久国产字幕| 国产精品久久国产精麻豆99网站| 超碰av在线免费观看| 欧美福利电影在线观看| 欧美精品久久| 亚洲综合影院| 国产日韩欧美在线视频观看| 蜜臀久久精品| 久久99久久久久久久噜噜| 国产又大又粗又长| 亚洲国产精品成人综合色在线婷婷 | 少妇一级淫免费播放| 激情五月***国产精品| 成人黄色在线观看| 免费h视频在线观看| 麻豆成人在线看| 精品乱码一区二区三四区视频 | 91色.com| 欧美综合在线播放| 天天综合亚洲| 日韩精品久久一区二区三区| 老司机在线精品视频| 97视频在线观看成人| 久热国产在线| 国产一区二区三区在线观看视频 | 99天天综合性| 99热这里只有精品2| 蜜桃视频第一区免费观看| 播放灌醉水嫩大学生国内精品| 亚洲一级影院| 国产精品国三级国产av| 一区二区三区网站| 91网站免费看| 黄色精品视频| 国产精品久久激情| 日本韩国在线视频爽| 亚洲欧美日韩直播| 欧美日韩 一区二区三区| 偷拍一区二区三区| 亚洲av无码国产精品麻豆天美| 成人免费高清在线观看| 久久av一区二区三| 国产一区二区三区黄视频 | 中文字幕一区二区精品| yw193.com尤物在线| 欧美日韩小视频| 波多野结衣高清视频| 色综合天天综合狠狠| 精品国产免费观看| 日本一区二区免费在线| 国产成人av一区二区三区不卡| 久久99精品久久久久久动态图| 黄色一级视频播放| 里番精品3d一二三区| 国产亚洲欧美一区二区三区| 国产精品中文字幕制服诱惑| 国产精品美女诱惑| 久久久久久久久久久久久久久久久久久久 | 国产成人在线视频观看| 欧美日韩亚洲视频一区| 国产精品免费精品一区| 日本精品视频一区二区三区| 波多野结衣家庭主妇| 欧美视频一区在线观看| 91tv国产成人福利| 性感美女久久精品| 日本网站在线播放| 国产精品久久久久久久久久久免费看| 免费看91的网站| 亚洲欧美视频一区| 亚洲理论片在线观看| 国产亚洲午夜高清国产拍精品| 乐播av一区二区三区| 国产精品久久网站| 国产精品成人免费观看| 婷婷丁香久久五月婷婷| 久久精品五月天| 欧美一区二区啪啪| 国产在线一级片| 欧美久久久久中文字幕| 午夜久久久久久噜噜噜噜| 日韩精品免费在线播放| www.亚洲资源| 色综合五月天导航| 欧美日韩在线资源| 九九久久精品一区| 亚洲精品**中文毛片| 国产日韩欧美视频在线| 超碰在线亚洲| 日韩一区二区电影在线观看| 欧美日韩综合| 日日噜噜夜夜狠狠| 成人美女视频在线观看18| 国产传媒在线看| 性感美女久久精品| 亚洲无码久久久久| 亚洲激情久久久| 麻豆tv在线| 日本精品视频在线观看| 密臀av在线播放| 国产欧美一区二区三区久久人妖 | 美女视频黄免费的久久| 亚洲精品无码一区二区| 国产精品毛片无遮挡高清| 日韩免费不卡视频| 欧美巨大另类极品videosbest| 天天综合天天色| 欧美成人手机在线| 日本欧美韩国| 久久99精品久久久水蜜桃| 一本一道久久a久久| 视频一区二区在线| 亚洲青色在线| 日本在线视频播放| 国产精品麻豆久久久| av毛片在线免费观看| 精品国产一区二区三区久久久蜜月| 精品人妻伦一二三区久久| 一区二区三区动漫| 午夜在线免费观看视频| 97av在线视频| av综合网站| 熟女视频一区二区三区| 日韩国产欧美在线播放| 日本肉体xxxx裸体xxx免费| av一区二区不卡| 欧美在线视频第一页| 亚洲一区二区三区四区在线| 国产成人愉拍精品久久| 欧美一区欧美二区| 成年人在线视频| 国产www精品| 在线免费观看亚洲| 97se亚洲综合在线| 五月天综合网站| 777一区二区| 中文字幕成人av| 中文字幕欧美人妻精品| 亚洲图片在线综合| 久久野战av| 日产精品一线二线三线芒果 | www午夜视频| 国产精品午夜在线观看| 亚洲av综合一区| 夜夜嗨av一区二区三区免费区| 成人亚洲欧美| 欧美一区1区三区3区公司| 久久精品毛片| 欧美做受高潮6| 欧美少妇bbb| 欧美96在线| 91视频免费在线| 国产精品九九| 国产一级黄色录像| 日本一区二区不卡视频| 国产精品无码一区| 有码中文亚洲精品| 久久人人视频| 看一级黄色录像| 丰满少妇久久久久久久| 日韩 欧美 精品| 日韩精品视频在线观看网址| 免费福利视频一区二区三区| 日韩经典在线视频| 久久国内精品自在自线400部| 欧美一级片在线视频| 日韩视频在线一区二区| 精品极品在线| 日本精品国语自产拍在线观看| 蜜臀va亚洲va欧美va天堂| 手机在线免费看毛片| 精品欧美乱码久久久久久| 在线天堂新版最新版在线8| 日韩免费中文专区| 国产激情一区二区三区桃花岛亚洲 | 久久天堂影院| 国产青草视频在线观看| 久久综合成人精品亚洲另类欧美| 最近中文在线观看| 久久大大胆人体| 久久夜色电影| 免费看涩涩视频| 午夜精品久久久久久不卡8050| 久草视频视频在线播放| 91在线国产电影| 亚洲综合不卡| 青青操在线视频观看| 色国产精品一区在线观看| 在线免费看黄网站| 国产精品一区而去| 免费不卡在线视频| 国产在线拍揄自揄拍无码视频| 伊人亚洲福利一区二区三区| 少妇精品在线| 国产精品一区在线免费观看| 国产91精品精华液一区二区三区| 国产综合精品视频| 日韩视频永久免费观看| 99只有精品| 四虎永久国产精品| 成人午夜在线免费| 国产视频1区2区| 欧美激情视频播放|