四虎永久精品免费观看-四虎影在线永久免费观看-四虎影院最新网址-四虎影院最新网站-国内大片在线免费看-国内成人自拍视频

Web前端知識

首頁 > 免費 > Web前端知識 >

Javascript編程風格

來源:北京匯仁智杰科技有限公司   時間:2015-12-15   點擊:

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

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

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

  一、大括號的位置

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

  最流行的有兩種。一種是起首的大括號另起一行:

  block
  {
  ...
  }
  另一種是起首的大括號跟在關鍵字的后面:
  block {
  ...
  }
  一般來說,這兩種寫法都可以接受。但是,Javascript要使用后一種,因為Javascript會自動添加句末的分號,導致一些難以察覺的錯誤。
  return
  {
  key:value;
  };
  上面的代碼的原意,是要返回一個對象,但實際上返回的是undefined,因為Javascript自動在return語句后面添加了分號。為了避免這一類錯誤,需要寫成下面這樣:
  return {
  key : value;
  };

  因此規則1:表示區塊起首的大括號,不要另起一行。

  二、 圓括號

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

  規則2:調用函數的時候,函數名與左括號之間沒有空格。

  規則3:函數名與參數序列之間,沒有空格。

  規則4:所有其他語法元素與左括號之間,都有一個空格。

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

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

  三、分號

  分號表示語句的結束。大多數情況下,如果你省略了句尾的分號,Javascript會自動添加。

  var a = 1

  等同于

  var a = 1;

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

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

  上面的代碼等同于

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

  因此規則5:不要省略句末的分號。

  四、with語句

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

  with (o) {
  foo = bar;
  }

  上面的代碼,可以有四種運行結果:

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

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

  規則6:不要使用with語句。

  五、相等和嚴格相等

  Javascript有兩個表示"相等"的運算符:"相等"(==)和"嚴格相等"(===)。

  因為"相等"運算符會自動轉換變量類型,造成很多意想不到的情況:
  0 == ''// true
  1 == true // true
  2 == true // false
  0 == '0' // true
  false == 'false' // false
  false == '0' // true
  " \t\r\n " == 0 // true

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

  六、語句的合并

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

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

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

  七、變量聲明

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

  因此規則9:所有變量聲明都放在函數的頭部。

  規則10:所有函數都在使用之前定義。

  八、全局變量

  Javascript最大的語法缺點,可能就是全局變量對于任何一個代碼塊,都是可讀可寫。這對代碼的模塊化和重復使用,非常不利。

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

  九、new命令

  Javascript使用new命令,從建構函數生成一個新對象。

  var o = new myObject();

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

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

  如果不得不使用new,為了防止出錯,最好在視覺上把建構函數與其他函數區分開來。

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

  十、自增和自減運算符

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

  事實上,所有的++運算符都可以用"+= 1"代替。
  ++x
  等同于
  x += 1;

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

  這個程序員忘了,還有更簡單、更合理的寫法:
  x += 2;

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

  十一、區塊

  如果循環和判斷的代碼體只有一行,Javascript允許該區塊(block)省略大括號。

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

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

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

  因此規則15:總是使用大括號表示區塊。

網絡營銷推廣 . 北京匯仁智杰科技有限公司!

地址:北京市昌平區回龍觀龍冠大廈5層
咨詢:15201492965
業務QQ:373002979
E - mail:sales @ huirenzhijie.com
企業網站備案:京ICP備15021091號-1

匯仁智杰與眾不同

  • 有網絡推廣經驗
  • 有網站建站隊伍
  • 有大型網站建設經驗
  • 致力于營銷型網站建設
  • 始終堅持技術和服務同樣重要
查看PC版網站
備案號:京ICP備15021091號-1 版權所有:匯仁智杰

主站蜘蛛池模板: 亚洲高清在线| 久久精品无码一区二区日韩av| 亚洲综合AV色婷婷五月蜜臀| 国产麻豆剧看黄在线观看| 亚洲网站在线播放| 色成人亚洲| 97亚洲狠狠色综合久久久久| 黄片在线观看| 狠狠色狠狠色综合曰曰| 日本免费无码A专区在线观看| 日韩成人免费视频播放| 国产在线视精品在亚洲| 亚洲人成毛片线播放| 海角国精产品一区一区三区糖心| 色婷婷婷丁香亚洲综合不卡| 亚洲xx视频| 亚洲福利| 热99RE久久精品国产| 亚洲在线视频自拍精品| 欧美一级做a爰片免费| 日本一区二区高清免费不卡| 欧美深夜0000XXXX疯狂| 国产高清美女一级a毛片久久w| 深夜国产一区二区三区在线看| 奇米第四色888| 轻点灬大ji巴太粗太双性高h| 日韩亚洲不卡在线视频| 在线不卡一区二区三区日韩| 孕交videosgratis乌克兰| 午夜亚洲福利| 十次啦中文网| 国产精品一区二区AV97| 3dbdsm变态videos高清| 日本大蕉香蕉大视频在线观看| 亚洲欧美字幕| 麻豆AV无码精品一区二区| 这里只有精品视频在线| 亚洲国产AV一区二区三区四区| 一本久道久久综合多人| 宅男午夜在线观看宅男| 厕所RXXX|