国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript代碼風格指北

546669204 / 709人閱讀

摘要:這段代碼工作正常,盡管沒有用分號在某些場景下是很管用的,特別是,有時候可以幫助減少代碼錯誤。比如不好的寫法盡管這段代碼能正常工作,但代碼中我們應盡量避免使用。

前言

在我們平時工作中寫代碼是最頻繁的事情了,但我們的代碼真的"好看"嗎?

預計本文閱讀時間(10分鐘)

正文 1.1--語句結尾

我們來看一段代碼

//合法的代碼
var name = "Dreams";
function sayName() {
    alert(name);
}
//合法的代碼,但不推薦這樣寫
var name = "Dreams"
function sayName() {
    alert(name)
}

這里我們可以看到上面兩段代碼的區別就是在于一段加了分號,一段沒有加,那么問題來了,我們到底該不該加分號?

解釋

這里其實有賴于分析的自動分號插入(Automatic Semicolon Insertion, ASI)機制,Javascript代碼省略分號也是可以正常工作的。ASI會自動尋找代碼中應當使用分號但實際沒有分號額位置,并插入分號。大多數場景下ASI都會正確插入分號,不會產生錯誤。但ASI的分號插入規則非常復雜且很難記住,因此推薦大家不要省略分號。看一下這段代碼:

// 原始代碼
function getData() {
    return
    {
        title: "Dreams",
        author: "Dreams"
    }
}
//分析器會將它理解成
function getData() {
    return;
    {
        title: "Dreams",
        author: "Dreams"  
    };
}

在這段代碼中,函數getData()的本意是返回一個包含一些數據的對象。然而,return之后新起了一行,導致return后被插入了一個分號,這會導致函數返回值是undefined. 可以通過將左花括號移至與return同一行的位置來修復這個問題。

//這段代碼工作正常,盡管沒有用分號
function getData() {
    return {
        title: "Dreams",
        author: "Dreams"  
    }
}

ASI在某些場景下是很管用的,特別是,有時候ASI可以幫助減少代碼錯誤。當某個場景我們認為不需要插入分號而ASI認為需要插入時,常常會產生錯誤。所以我們盡量養成加分號的習慣,在某種意義上加上分號還提高程序的性能哦!

1.2--換行

當一行長度達到了單行最大字符數限制時,就需要手動將一行拆成兩行。通常我們會在運算符后換行,下一行會增加兩個層級的縮進。比如這樣。

在這個例子中,逗號時一個運算符,應當作為前一行的行尾。這個換行位置非常重要,因為ASI機制會在某些場景下在行結束的位置插入分號。總是將一個運算符置為行尾,ASI就不會自作主張地插入分號,也就避免了錯誤的發生。

1.3--命名

我們只要是代碼,都會涉及變量和函數,因此變量和函數命名對于增強代碼可讀性至關重要。那么在js中,ECMAScript推薦我們遵循**駝峰式大小寫(Camel Case)**的命名方式.這種命名方式是小寫字母開始的,后續每個單詞首字母都大寫,比如:

var thisMyName;
var anotherVariable;
var aVeryLongVariableName;
函數的命名

我們推薦函數函數前用動詞開頭

//好的寫法
var count = 10;
var myName = "Dreams"
var found = true
//不好的寫法:變量看起來像函數
var getCount = 10;
var isFound = true;
//好的寫法
function getName() {
    return myName;
}
//不好的寫法:函數看起來像變量
function theName() {
    return myName;
}

命名是一種學問,更是一門技術!,通常我們應盡量保持盡可能的簡短,抓重點的命名方式。通過函數命就大概可以看出這個是干什么的函數。記住寫代碼永遠不是在給自己寫,而是在給你下一個接手的人寫,所以代碼寫的規范對大家都有好處 我們推薦的函數有:can has is get set 例如:canDo hasClass isBlack getData setData

1.4--null

null是一個特殊值,但我們常常誤解它,將它和undefined搞混。在下列場景中應當使用null.

用來初始化一個變量

用來和一個已經初始化的變量比較,這個變量可以是也可以不是一個對象

當函數的參數期望是對象時,用作參數傳入。

當函數的返回值期望是對象時,用作返回值傳出

還有下面一些場景不應當使用null.

不要使用null來檢測是否傳入了某個參數。

不要用null來檢測一個未初始化的變量

示例代碼:

//好的用法
var person = null;
function getPerson() {
    if (condition) {
        return new Person("Dreams");
    } else {
        return null;
    }
}
var person = getPerson();
if (person !== null) {
    doSomething();
}

//不好的寫法:用來和未初始化的變量比較
var person;
if (person != null) {
   doSomething() 
}
//不好的寫法:用來和未初始化的變量比較
var person;
if (person != null) {
    doSomething();
}
//不好的寫法:檢測是否傳入了參數
function doSomething(arg1,arg2,arg3,arg4) {
    if (arg4 != null) {
        doSomethingElse();
    }
}
1.5--undefined

undefined是一個特殊值,我們常常把它和null搞混。其中一個讓人頗感困惑的就是null == undefined結果是true。然而,這兩個值的用途卻各不相同。那些沒有被初始化的變量都有一個初始值,即undefined,表示這個變量等待被賦值。比如:

//不好的寫法
var person;
console.log(person === undefined);//true

盡管這段代碼能正常工作,但代碼中我們應盡量避免使用undefined。這個值常常和返回"undefined"的typeof運算符混淆。事實上,typeof的行為也很讓人費解,因為不管值是undefined的變量還是未聲明的變量,typeof運算結果都是"undefined",比如:

//foo未被聲明
var person;
console.log(typeof person);//"undefined"
console.log(typeof foo)//"undefined"

在這段代碼中,person和foo都會導致tpyeof返回"undefined" 當變量未聲明時,如果你使用了一個可能(或可能不會)賦值為一個對象的變量時,則將其賦值為null

//好的做法
var person = null;
console.log(person === null);//true

將變量初始值賦值為null表明了這個變量的意圖,他最終很可能賦值為對象。typeof運算符運算null的類型時返回"object",這樣就可以和undefined區分開了

1.6--對象字面量

聲明數組和對象時推薦下面的做法

//好的寫法
var book = {}
var numbers = [1,2,3,4]
//不好的寫法
var book = new Object();
var numbers = new Array(1,2,3,4)
結語

本文內容參考至<<編寫可維護的javascript>>

在日常工作中我們應當合理使用上述方法對變量/方法/對象/數組進行管理,而不是胡亂的起名和管理,這樣會對我們項目后續的維護不利,如果大家還有什么好的習慣,可以在評論區提出哦。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7356.html

相關文章

  • JavaScript 作用域不完全指北

    摘要:一旦到達頂層全局作用域,可能找到,也可能沒有找到,查找過程都必須停止。當引擎執行查詢時,如果查詢在所有嵌套的作用域中遍尋不到所需的變量,引擎就會拋出異常。代表作用域判別失敗相關,而則代表作用域判別成功了,但是對結果的操作是非法或不合理的。 什么是作用域 對于幾乎所有編程語言,最基本的功能之一就是能夠存儲變量的值,并且能在之后對這個值進行訪問和修改。這樣就會帶來幾個問題,這些變量存儲在哪...

    coordinate35 評論0 收藏0
  • React Native 基礎練習指北(一)

    摘要:圍觀本文需自備,,以及。使用打開,并點擊,會看到模擬器以及此項目對應的內容,效果如下如果想要修改顯示內容,請打開,里面是一堆模樣的東西。接下來,我們按照教程,來展示一張電影海報,為了方便,我們直接修改。 原文鏈接:http://www.tinghaige.com/ 本著什么都要攙和的原則,一起來看看React Native是如何開發iOS APP。 圍觀本文需自備Mac OSX ,...

    nidaye 評論0 收藏0
  • [Javascript]cssText基本使用指北

    摘要:如果解析失敗則終止運行。如果新對象的并不匹配當前對象的則拋出異常。替換當前對象為新對象。是替換,也就是說會覆蓋到目標元素之前本身所具有的全部樣式繼承的不算。除此以外,下返回的屬性和值全是大寫,為了避免日后出現意外,還是比較好。 一、cssText之起步 那些年,我們是這樣設置樣式的: xxx.style.width = 233px; xxx.style.position = fix...

    tulayang 評論0 收藏0
  • [Javascript]cssText基本使用指北

    摘要:如果解析失敗則終止運行。如果新對象的并不匹配當前對象的則拋出異常。替換當前對象為新對象。是替換,也就是說會覆蓋到目標元素之前本身所具有的全部樣式繼承的不算。除此以外,下返回的屬性和值全是大寫,為了避免日后出現意外,還是比較好。 一、cssText之起步 那些年,我們是這樣設置樣式的: xxx.style.width = 233px; xxx.style.position = fix...

    MASAILA 評論0 收藏0
  • Nginx配置指北之gzip

    摘要:如有錯誤,歡迎指正。如果使用了進行反向代理,那么和后端的之間默認是用協議通信的。如果不是這樣,最好設置為,因為這會造成額外的開銷。一個比較好的處理方式是放在或級別單獨處理。 無論是前端還是后端,在部署項目時,時常免不了用到Nginx,小項目也時常做個反向代理啥的。今天就簡單直接,聊一下其中的一個點——gzip。如有錯誤,歡迎指正。 一般服務器端常用的是 Ubuntu、CentOS、Li...

    yunhao 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<