《編寫可維護的JavaScript》讀書筆記——3.語句和表示式
所有的塊語句都應當使用花括號,包括:
- if
- for
- while
- do…while…
- try…catch…finally
3.1 花括號的對齊方式
風格:左花括號放置在塊語句中第一句程式碼的末尾。
示例:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
3.2 塊語句間隔
風格:在左括弧之前和右括弧之後各新增一個空格
示例:
if (condition) {
doSomething();
}
3.3 switch語句
switch語句中可以使用任意型別值,任何表示式都可以合法地用於case從句。
3.3.1 縮排
風格:
- 每條case語句相對於switch關鍵字都縮排一個層級
- 從第二條case語句,每條case語句前後各有一個空行
示例:
switch (condition) {
case "first":
// 程式碼
break;
case "second":
// 程式碼
break;
case "third":
// 程式碼
break;
default:
// 程式碼
}
3.3.2 case語句的“連續執行”
case的連續執行(fall through)是一種可接受的程式設計方法,程式的邏輯要清晰,並且有意添加註釋。
示例:
switch (condition) {
// 明顯的依次執行
case "first":
case "second":
// 程式碼
break;
case "third":
// 程式碼
/* fall through */
default:
// 程式碼
}
3.3.3 default
如果沒有default,可以加一行註釋。
示例:
switch (condition) { case "first": // 程式碼 break; case "second": // 程式碼 break; // 沒有 default
}
3.4 with語句
避免使用with語句
3.5 for迴圈
傳統for迴圈用於遍歷陣列成員。break語句和continue語句可以更改迴圈的執行過程,continue語句可以用if語句代替。
示例:
var values = [1, 2, 3, 4, 5, 6, 7],
i, len;
for (i = 0, len = values.length; i < len; i++) {
if (i === 2){
// break提前結束迴圈
break;
}
process(values[i]);
}
for (i = 0, len = values.length; i < len; i++) {
if (i === 2){
// 不執行此次迭代
continue;
}
process(values[i]);
}
for (i = 0, len = values.length; i < len; i++) {
// 用if語句替代continue
if (i !== 2){
process(values[i]);
}
}
3.4 for-in 迴圈
for-in迴圈用來遍歷物件屬性,返回屬性名而不是值。for-in會遍歷物件從原型中帶來的屬性。可用 hasOwnProperty() 方法過濾例項屬性。
var prop;
for (prop in object) {
// 檢查是否是例項屬性
if (object.hasOwnProperty(prop)) {
console.log("Property name is " + prop);
console.log("Property value is " + object[prop]);
}
}
注意,for-in是遍歷物件的,禁止遍歷陣列。
// 不好的用法,用來遍歷陣列
var values = [1, 2, 3, 4, 5, 6, 7],
i, len;
for (i in values) {
process(items[i]);
}
相關推薦
《編寫可維護的JavaScript》讀書筆記——3.語句和表示式
所有的塊語句都應當使用花括號,包括: if for while do…while… try…catch…finally 3.1 花括號的對齊方式 風格:左花括號放置在塊語句中第一句程式碼的末尾。 示例: if (condition) { d
《編寫可維護的JavaScript》讀書筆記之程式設計風格-語句與表示式
語句與表示式 在 JavaScript 中,諸如 if 和 for 之類的語句有兩種寫法,使用花括號包裹的多行程式碼或者不使用花括號的單行程式碼。 【示例】: // 不好的寫法,儘管這是合法的JavaScript的程式碼 if(condition) doSo
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-不是你的物件不要動
不是你的物件不要動 JavaScript 獨一無二之處在於任何東西都不是神聖不可侵犯的。預設情況下,可以修改任何可以觸及的物件。解析器根本不在乎這些物件是開發者定義的還是預設執行環境的一部分——只要是能訪問到的物件都可以修改。在一個開發者獨自開發的專案中,這不是問題,開發者確切地
《編寫可維護的JavaScript》讀書筆記之自動化-Ant
Ant 開發者通常基於他們所熟悉的工具來選擇構建工具。 Ant 最初是為 Java 專案而量身定做的構建工具,但因其簡單的 XML 語法和內建的任務,成為 JavaScript 構建工具的一個明智選擇。 安裝 執行 Ant 需要 Java 環境,所以請確保你的系統已
《編寫可維護的JavaScript》讀書筆記之自動化-檔案和目錄結構
檔案和目錄結構 在開始構建你的系統之前首先要確定如何組織你的檔案和目錄。而檔案和目錄的結構取決於專案型別。 最佳實踐 拋開專案型別不說,總有一些適合於 JavaScript 檔案和目錄結構公用的最佳實踐。 一個檔案只包含一個物件 概念:
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-丟擲自定義錯誤
丟擲自定義錯誤 在 JavaScript 中丟擲錯誤是一門藝術。一旦理解如何丟擲錯誤,以及在何時丟擲錯誤,除錯程式碼的時間將大大所縮短,對程式碼的滿意度將急劇提升。 錯誤的本質 如果錯誤沒有被丟擲或者報告給開發者,除錯是非常困難的。如果所有的失敗都是悄無聲息
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-將配置資料從程式碼中分離
將配置資料從程式碼中分離出來 任何時候修改原始碼都會有引入 bug 的風險,且只修改一些資料的值也會帶來一些不必要的風險。精心設計的應用應當將關鍵資料從主要的原始碼中抽離出來,因為資料是不應當影響指令的正常執行。 什麼是配置資料 配置資料是應用中寫死(har
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-避免“空比較”
避免“空比較” 在 JavaScript 中,我們常會看到這種程式碼:變數與 null 的比較,用來判斷變數是否被賦予一個合理的值。比如: var Controller = { process : function(items) { // 不好的寫法
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-事件處理
事件處理 在所有 JavaScript 應用中事件處理都是非常重要的。所有的 JavaScript 均通過事件繫結到 UI 上,所以大多數前端工程師需要花費很多時間來編寫和修改事件處理程式。由於事件繫結沒有受到多大重視,大多數事件處理相關的程式碼和事件環境(對於開發者來說,每次事
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-避免使用全域性變數
避免使用全域性變數 在瀏覽器中,window 物件往往過載並等同於全域性物件,因此任何在全域性作用域中宣告的變數和函式都是 window 物件的屬性。 【示例】: var color = "red"; function sayColor() { alert
《編寫可維護的JavaScript》讀書筆記之程式設計風格-變數、函式和運算子
變數、函式和運算子 變數宣告 變數宣告是通過 var 語句來完成的。JavaScript 中允許多次使用 var 語句,此外 var 語句幾乎可以用在 JavaScript 指令碼中的任意地方。 【注意】:不論 var 語句是否真正會被執行,所有的 var 語句都提
《編寫可維護的JavaScript》讀書筆記之程式設計風格-註釋
註釋 註釋是程式碼中最常見的組成部分。它們是另一種形式的文件,也是程式設計師最後才捨得花時間去寫的。但是,對於程式碼的總體可維護性而言,註釋是非常重要的一環。適度的添加註釋可以解釋說明程式碼的來龍去脈,其他開發者就可以不用從頭開始讀程式碼,而是直接去讀程式碼的任意部分。
《編寫可維護的JavaScript》讀書筆記之程式設計風格-基本的格式化
基本的格式化 命名 “電腦科學只存在兩個難題:快取失效和命名。”—— Phil Karlton 只要是書寫程式碼,都會涉及變數和函式,因此變數和函式命名對於增強程式碼可讀性至關重要。JavaScript 語言的核心 ECMAScript,即是遵照了駝峰式大小寫命名法
《編寫可維護的JavaScript》- 讀書筆記
引用 這是我刷完的第一本書。萬事開頭難,總算是在2017年02月09日開了一個好頭。 這篇總結是為了記錄在讀這本書的過程中所遇到的好的知識點和思想,以及我在實際工作中結合作者的想法所做的一些實踐和讀書的收穫。 這本書從兩個個方面(風格和實踐)來講述如何去寫
讀書筆記:編寫可維護的javascript
使用for-in迴圈的時候,要使用hasOwnProperty方法進行過濾,除非你想查詢原型鏈上的繼承屬性不應當使用for-in迴圈進行陣列遍歷,而只應該對object的屬性進行遍歷每行表示式的結尾要使用分號(;),為了使壓縮包能正常工作,還應該為每個js檔案的開頭加上分號,形如這樣的匿名函式定義;(func
編寫可維護的javascript程式碼-讀書心得
開文抄襲一段原文: 程式設計風格和編碼規範是什麼?程式設計風格是編碼規範的一種,用來規約單檔案中程式碼的規劃。編碼規範還包含程式設計最佳實踐、檔案和目錄的規範及註釋等方面。 下面按照書的目錄進行整理一些心得 1. 基本格式化 縮排層級 分為兩種,使用製表符和空格符進行縮排,縮
資料結構與演算法JavaScript描述讀書筆記3(檢索演算法)
列表中查詢資料有兩種方法:順序查詢和二分查詢。順序查詢使用於元素隨機排列的列表;二分查詢適用於元素已排序的列表。二分查詢效率高,但是必須花費額外時間將列表中的元素排序 順序查詢 時間複雜度:O(n) function seqSearch(arr,data){ for(var i=
編寫高效能JavaScript (讀書筆記)
轉載自http://kb.cnblogs.com/page/501177/ 作者: Addy Osmani 讀書筆記: 作者以V8為例講解: 一.核心構成部分 二.垃圾回收GC:Garbage Collecation 更喜歡叫做資源回收。 Q1:在JavaScript
編寫可維護程式碼3:適當的丟擲錯誤提示
編寫可維護的程式碼規則第3篇。 在js開發中,除錯錯誤是一個比較頭疼的事,又不像java的debug那麼方便,定位錯誤往往不是那麼容易,除非對程式碼熟悉無比,但即使是自己寫的程式碼,功能一複雜,時間一長,再想快速定位問題,至少我現在是比較頭疼的。此時,如果有一個比較友好的錯誤提示,那
編寫可維護的javascript(五):UI層的鬆耦合
鬆耦合 當你能做到修改一個元件而不需要修改其他的元件時,你就做到了鬆耦合。 將Javascript從CSS中抽離 在IE8和更早的版本,存在CSS表示式。CSS表示式允許你講Javascript直接插入到CSS中,這樣可以在CSS程式碼中直接執行運算或其他