Javascript 風格嚮導(終結)

來源:互聯網
上載者:User
序   繼續前兩篇,這篇作為終結篇。 Blocks • 有{}的代碼,我們換行處理。
// badif (test)  return false;// goodif (test) return false;// goodif (test) {  return false;}// badfunction() { return false; }// goodfunction() {  return false;}

 

Comments • 對於多行注釋使用/**  ... */。包含描述資訊、參數類型和傳回值。 
// bad// make() returns a new element// based on the passed in tag name//// @param <String> tag// @return <Element> elementfunction make(tag) {  // ...stuff...  return element;}// good/** * make() returns a new element * based on the passed in tag name * * @param <String> tag * @return <Element> element */function make(tag) {  // ...stuff...  return element;}

 

• 對於單行注釋使用//。單行注釋單獨放置在一個新行上。在注釋前面放置一個空行。
// badvar active = true;  // is current tab// good// is current tabvar active = true;// badfunction getType() {  console.log('fetching type...');  // set the default type to 'no type'  var type = this._type || 'no type';  return type;}// goodfunction getType() {  console.log('fetching type...');  // set the default type to 'no type'  var type = this._type || 'no type';  return type;}

 

• 對於一些問題,注釋前加FIXME或TODO,這樣將快速協助開發人員快速明白代碼意圖。

• 使用 // FIXME: 注釋問題

function Calculator() {  // FIXME: shouldn't use a global here  total = 0;  return this;}

• 使用 // TODO: 注釋問題的解決方案

function Calculator() {  // TODO: total should be configurable by an options param  this.total = 0;  return this;}

 

Type Casting & Coercion • 在聲明之前執行強制類型轉換。• 字串
//  => this.reviewScore = 9;// badvar totalScore = this.reviewScore + '';// goodvar totalScore = '' + this.reviewScore;// badvar totalScore = '' + this.reviewScore + ' total score';// goodvar totalScore = this.reviewScore + ' total score';

 • 對於數字轉換,使用parseInt,而且要帶著類型轉換的基數。

 • 如果parseInt成為你的瓶頸,處於效能原因,需要你使用“位移”操作。那麼請寫下注釋解釋你這樣做的原因。

var inputValue = '4';// badvar val = new Number(inputValue);// badvar val = +inputValue;// badvar val = inputValue >> 0;// badvar val = parseInt(inputValue);// goodvar val = Number(inputValue);// goodvar val = parseInt(inputValue, 10);// good/** * parseInt 使My Code變慢. * 為了提高速度,使用位移操作讓字串強制轉化為數字。 */var val = inputValue >> 0;

 • 布爾

var age = 0;// badvar hasAge = new Boolean(age);// goodvar hasAge = Boolean(age);// goodvar hasAge = !!age;

 

Constructors  • 用方法擴充項物件,而不是用一個新對象。
function Jedi() {  console.log('new jedi');}// badJedi.prototype = {  fight: function fight() {    console.log('fighting');  },  block: function block() {    console.log('blocking');  }};// goodJedi.prototype.fight = function fight() {  console.log('fighting');};Jedi.prototype.block = function block() {  console.log('blocking');};

 

  • 讓對象的方法return this,這樣有利於方法的鏈鎖操作。 
// badJedi.prototype.jump = function() {  this.jumping = true;  return true;};Jedi.prototype.setHeight = function(height) {  this.height = height;};var luke = new Jedi();luke.jump(); // => trueluke.setHeight(20) // => undefined// goodJedi.prototype.jump = function() {  this.jumping = true;  return this;};Jedi.prototype.setHeight = function(height) {  this.height = height;  return this;};var luke = new Jedi();luke.jump()  .setHeight(20);

  • 我們可以自訂一個toString()方法。——要確保它能正常運行,而且不會產生其他影響。

function Jedi(options) {  options || (options = {});  this.name = options.name || 'no name';}Jedi.prototype.getName = function getName() {  return this.name;};Jedi.prototype.toString = function toString() {  return 'Jedi - ' + this.getName();};

 

 

總結   終於算是寫完了,希望能夠對大家所有協助。 推薦 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.