日韩精品一区二区三区视频-日韩精品一区二区三区在线观看-日韩精品一区二区三区在线观看l-日韩精品一区二区三区中文-日韩精品一区二区三区中文3d-日韩精品一区二区三区中文不卡

Web前端知識(shí)

首頁 > 免費(fèi) > Web前端知識(shí) >

Javascript編程風(fēng)格

來源:北京匯仁智杰科技有限公司   時(shí)間:2015-12-15   點(diǎn)擊:

  所謂"編程風(fēng)格"(programming style),指的是編寫代碼的樣式規(guī)則。不同的程序員,往往有不同的編程風(fēng)格。

  有人說,編譯器的規(guī)范叫做"語法規(guī)則"(grammar),這是程序員必須遵守的;而編譯器忽略的部分,就叫"編程風(fēng)格"(programming style),這是程序員可以自由選擇的。這種說法不完全正確,程序員固然可以自由選擇編程風(fēng)格,但是好的編程風(fēng)格有助于寫出質(zhì)量更高、錯(cuò)誤更少、更易于 維護(hù)的程序。

  所以,有一點(diǎn)應(yīng)該明確,"編程風(fēng)格"的選擇不應(yīng)該基于個(gè)人愛好、熟悉程度、打字工作量等因素,而要考慮如何盡量使代碼清晰易讀、減少出錯(cuò)。你選擇的,不是你喜歡的風(fēng)格,而是一種能夠清晰表達(dá)你的意圖的風(fēng)格。這一點(diǎn),對(duì)于Javascript這種語法自由度很高、設(shè)計(jì)不完全成熟的語言尤其重要。

  一、大括號(hào)的位置

  絕大多數(shù)的編程語言,都用大括號(hào)({})表示區(qū)塊(block)。起首的大括號(hào)的位置,有許多不同的寫法。

  最流行的有兩種。一種是起首的大括號(hào)另起一行:

  block
  {
  ...
  }
  另一種是起首的大括號(hào)跟在關(guān)鍵字的后面:
  block {
  ...
  }
  一般來說,這兩種寫法都可以接受。但是,Javascript要使用后一種,因?yàn)镴avascript會(huì)自動(dòng)添加句末的分號(hào),導(dǎo)致一些難以察覺的錯(cuò)誤。
  return
  {
  key:value;
  };
  上面的代碼的原意,是要返回一個(gè)對(duì)象,但實(shí)際上返回的是undefined,因?yàn)镴avascript自動(dòng)在return語句后面添加了分號(hào)。為了避免這一類錯(cuò)誤,需要寫成下面這樣:
  return {
  key : value;
  };

  因此規(guī)則1:表示區(qū)塊起首的大括號(hào),不要另起一行。

  二、 圓括號(hào)

  圓括號(hào)(parentheses)在Javascript中有兩種作用,一種表示調(diào)用函數(shù),另一種表示不同的值的組合(grouping)。我們可以用空格,區(qū)分這兩種不同的括號(hào)。

  規(guī)則2:調(diào)用函數(shù)的時(shí)候,函數(shù)名與左括號(hào)之間沒有空格。

  規(guī)則3:函數(shù)名與參數(shù)序列之間,沒有空格。

  規(guī)則4:所有其他語法元素與左括號(hào)之間,都有一個(gè)空格。

  按照上面的規(guī)則,下面的寫法都是不規(guī)范的:

  foo (bar)
  return(a+b);
  if(a === 0) {...}
  function foo (b) {...}
  function(x) {...}

  三、分號(hào)

  分號(hào)表示語句的結(jié)束。大多數(shù)情況下,如果你省略了句尾的分號(hào),Javascript會(huì)自動(dòng)添加。

  var a = 1

  等同于

  var a = 1;

  因此,有人提倡省略句尾的分號(hào)。但麻煩的是,如果下一行的第一個(gè)字元(token)是下面這五個(gè)字符之一,Javascript將不對(duì)上一行句尾添加分號(hào):"("、"["、"/"、"+"和"-"。

  x = y
  (function (){
  ...
  })();

  上面的代碼等同于

  x = y(function (){...})();

  因此規(guī)則5:不要省略句末的分號(hào)。

  四、with語句

  with可以減少代碼的書寫,但是會(huì)造成混淆。

  with (o) {
  foo = bar;
  }

  上面的代碼,可以有四種運(yùn)行結(jié)果:

  o.foo = bar;
  o.foo = o.bar;
  foo = bar;
  foo = o.bar;

  這四種結(jié)果都可能發(fā)生,取決于不同的變量是否有定義。因此,

  規(guī)則6:不要使用with語句。

  五、相等和嚴(yán)格相等

  Javascript有兩個(gè)表示"相等"的運(yùn)算符:"相等"(==)和"嚴(yán)格相等"(===)。

  因?yàn)?quot;相等"運(yùn)算符會(huì)自動(dòng)轉(zhuǎn)換變量類型,造成很多意想不到的情況:
  0 == ''// true
  1 == true // true
  2 == true // false
  0 == '0' // true
  false == 'false' // false
  false == '0' // true
  " \t\r\n " == 0 // true

  因此規(guī)則7:不要使用"相等"(==)運(yùn)算符,只使用"嚴(yán)格相等"(===)運(yùn)算符。

  六、語句的合并

  有些程序員追求簡(jiǎn)潔,喜歡合并不同目的的語句。比如,原來的語句是

  a = b;
  if (a) {...}
  他喜歡寫成下面這樣:
  if (a = b) {...}
  雖然語句少了一行,但是可讀性大打折扣,而且會(huì)造成誤讀,讓別人誤以為這行代碼的意思是:
  if (a === b){...}
  另外一種情況是,有些程序員喜歡在同一行中賦值多個(gè)變量:
  var a = b = 0;
  他以為,這行代碼等同于
  var a = 0, b = 0;
  實(shí)際上不是,它的真正效果是下面這樣:
  b = 0;
  var a = b;

  因此規(guī)則8:不要將不同目的的語句,合并成一行。

  七、變量聲明

  Javascript會(huì)自動(dòng)將變量聲明"提升"(hoist)到代碼塊(block)的頭部。
  if (!o) {
  var o = {};
  }
  等同于
  var o;
  if (!o) {
  o = {};
  }
  為了避免可能出現(xiàn)的問題,不如把變量聲明都放在代碼塊的頭部。
  for (var i ...) {...}
  最好寫成:
  var i;
  for (i ...) {...,}

  因此規(guī)則9:所有變量聲明都放在函數(shù)的頭部。

  規(guī)則10:所有函數(shù)都在使用之前定義。

  八、全局變量

  Javascript最大的語法缺點(diǎn),可能就是全局變量對(duì)于任何一個(gè)代碼塊,都是可讀可寫。這對(duì)代碼的模塊化和重復(fù)使用,非常不利。

  規(guī)則11:避免使用全局變量;如果不得不使用,用大寫字母表示變量名,比如UPPER_CASE。

  九、new命令

  Javascript使用new命令,從建構(gòu)函數(shù)生成一個(gè)新對(duì)象。

  var o = new myObject();

  這種做法的問題是,一旦你忘了加上new,myObject()內(nèi)部的this關(guān)鍵字就會(huì)指向全局對(duì)象,導(dǎo)致所有綁定在this上面的變量,都變成全部變量。

  規(guī)則12:不要使用new命令,改用Object.create()命令。

  如果不得不使用new,為了防止出錯(cuò),最好在視覺上把建構(gòu)函數(shù)與其他函數(shù)區(qū)分開來。

  規(guī)則13:建構(gòu)函數(shù)的函數(shù)名,采用首字母大寫(InitialCap);其他函數(shù)名,一律首字母小寫。

  十、自增和自減運(yùn)算符

  自增(++)和自減(--)運(yùn)算符,放在變量的前面或后面,返回的值不一樣,很容易發(fā)生錯(cuò)誤。

  事實(shí)上,所有的++運(yùn)算符都可以用"+= 1"代替。
  ++x
  等同于
  x += 1;

  代碼變得更清晰了。有一個(gè)很可笑的例子,某個(gè)Javascript函數(shù)庫的源代碼中出現(xiàn)了下面的片段:
  ++x;
  ++x;

  這個(gè)程序員忘了,還有更簡(jiǎn)單、更合理的寫法:
  x += 2;

  因此規(guī)則14:不要使用自增(++)和自減(--)運(yùn)算符,用+=和-=代替。

  十一、區(qū)塊

  如果循環(huán)和判斷的代碼體只有一行,Javascript允許該區(qū)塊(block)省略大括號(hào)。

  下面的代碼
  if (a) b(); c();

  原意可能是
  if (a) { b(); c();}

  但是,實(shí)際效果是
  if (a) { b();} c();

  因此規(guī)則15:總是使用大括號(hào)表示區(qū)塊。

網(wǎng)絡(luò)營(yíng)銷推廣 . 北京匯仁智杰科技有限公司!

地址:北京市昌平區(qū)回龍觀龍冠大廈5層
咨詢:13370157521
業(yè)務(wù)QQ:373002979
E - mail:sales @ huirenzhijie.com
企業(yè)網(wǎng)站備案:京ICP備15021091號(hào)-1

匯仁智杰與眾不同

  • 有網(wǎng)絡(luò)推廣經(jīng)驗(yàn)
  • 有網(wǎng)站建站隊(duì)伍
  • 有大型網(wǎng)站建設(shè)經(jīng)驗(yàn)
  • 致力于營(yíng)銷型網(wǎng)站建設(shè)
  • 始終堅(jiān)持技術(shù)和服務(wù)同樣重要
查看PC版網(wǎng)站
備案號(hào):京ICP備15021091號(hào)-1 版權(quán)所有:匯仁智杰

99精品视频69v精品视频 | 色偷偷噜噜噜亚洲男人 | 国产激情无码视频在线播放性色 | 丰满人妻熟妇乱又伦精品软件 | 国产河南妇女毛片精品久久 | 黑人巨茎大战欧美白妇 | 亚洲国产无线乱码在线观看 | 中文字幕av在线一二三区 | 精品无码久久久久久久动漫 | 国产精品成人99一区无码 | 国产欧美日韩精品丝袜高跟鞋 | 日韩精品一区二区三区免费视频 | 蜜桃视频一区二区三区在线观看 | 亚洲av日韩av永久无码久久 | 久草中文在线视频 | 婷婷丁香社区 | 人妻少妇看a偷人无码 | 亚洲精品乱码久久久久久久久久久久 | 国产suv精品一区二区33 | 国产精品久久久久久妇女 | 97精品在线 | 3344成年站福利在线视频免费 | 97久久精品人人澡人人爽 | 特黄 做受又硬又粗又大视频 | 国产女人被狂躁到高潮小说 | 加勒比色老久久爱综合网 | 国产精品久久久久aaaa | 曰本丰满熟妇xxxx性 | 91麻豆精品视频 | 特黄做受又硬又粗又大视频小说 | 国产无人区码一码二码三mba | 欧美黑人性暴力猛交喷水 | 国产成人无码一二三区视频 | 国产精品久久久久久人妻精品 | 国产av无码专区亚洲av麻豆 | 女人被狂躁c到高潮视频 | 台湾无码一区二区 | 中文字字幕在线中文无码 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产成人免费高清在线观看 | 精品一区二区久久久久久久网站 |