ES6 編程風格

来源:http://www.cnblogs.com/mengfangui/archive/2017/12/14/8038426.html
-Advertisement-
Play Games

1、塊級作用域 (1)使用let代替var 好處:變數應該只在其聲明的代碼塊內有效;var命令存在變數提升效用,let命令沒有這個問題。 (2)全局常量 在let和const之間,建議優先使用const,尤其是在全局環境,不應該設置變數,只應設置常量。 const優於let有幾個原因。一個是cons ...


1、塊級作用域

(1)使用let代替var

好處:變數應該只在其聲明的代碼塊內有效var命令存在變數提升效用,let命令沒有這個問題。

(2)全局常量

letconst之間,建議優先使用const,尤其是在全局環境,不應該設置變數,只應設置常量。

const優於let有幾個原因。一個是const可以提醒閱讀程式的人,這個變數不應該改變;另一個是const比較符合函數式編程思想,運算不改變值,只是新建值,而且這樣也有利於將來的分散式運算;最後一個原因是 JavaScript 編譯器會對const進行優化,所以多使用const,有利於提高程式的運行效率,也就是說letconst的本質區別,其實是編譯器內部的處理不同。

 

2、字元串

靜態字元串一律使用單引號或反引號,不使用雙引號。動態字元串使用反引號

 

3、解構賦值

const arr = [1, 2, 3, 4];

// bad
const first = arr[0];
const second = arr[1];

// good
const [first, second] = arr;

函數的參數如果是對象的成員,優先使用解構賦值。

// bad
function getFullName(user) {
  const firstName = user.firstName;
  const lastName = user.lastName;
}

// good
function getFullName(obj) {
  const { firstName, lastName } = obj;
}

// best
function getFullName({ firstName, lastName }) {
}

如果函數返回多個值,優先使用對象的解構賦值,而不是數組的解構賦值。這樣便於以後添加返回值,以及更改返回值的順序。

// bad
function processInput(input) {
  return [left, right, top, bottom];
}

// good
function processInput(input) {
  return { left, right, top, bottom };
}

const { left, right } = processInput(input);

 

4、對象

對象的屬性和方法,儘量採用簡潔表達法,這樣易於描述和書寫。

var ref = 'some value';

// bad
const atom = {
  ref: ref,

  value: 1,

  addValue: function (value) {
    return atom.value + value;
  },
};

// good
const atom = {
  ref,

  value: 1,

  addValue(value) {
    return atom.value + value;
  },
};

 

5、數組

使用擴展運算符(...)拷貝數組。

// bad
const len = items.length;
const itemsCopy = [];
let i;

for (i = 0; i < len; i++) {
  itemsCopy[i] = items[i];
}

// good
const itemsCopy = [...items];

使用 Array.from 方法,將類似數組的對象轉為數組。

const foo = document.querySelectorAll('.foo');
const nodes = Array.from(foo);

 

6、函數

(1)簡單的、單行的、不會復用的函數,建議採用箭頭函數。如果函數體較為複雜,行數較多,還是應該採用傳統的函數寫法。

(2)不要在函數體內使用 arguments 變數,使用 rest 運算符(...)代替。

 

function concatenateAll(...args) {
  return args.join('');
}

 

(3)使用預設值語法設置函數參數的預設值。

// bad
function handleThings(opts) {
  opts = opts || {};
}

// good
function handleThings(opts = {}) {
  // ...
}

7、Map結構

註意區分 Object 和 Map,只有模擬現實世界的實體對象時,才使用 Object。如果只是需要key: value的數據結構,使用 Map 結構。因為 Map 有內建的遍歷機制。

let ss = new Map([
                ['a', 1],
                ['b', 2]
            ]);
            //遍歷方式1
            for(let [akey, avalue] of ss) {
                console.log(akey + ":" + avalue)
            }
            //遍歷方式2
            for(let item of ss) {
                console.log(item[0] + ":" + item[1])
            }
            //遍歷方式3
            for(let [akey, avalue] of ss.entries()) {
                console.log(akey + ":" + avalue)
            }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.基本數據類型 string number boolean undefined null(只講undefined null) 2.undefined 未定義 只有一個值就是undefined。 3. null 空 4.undefined和null比較 5. NaN (not a number) 不 ...
  • 1,為什麼使用正則表達式? 1,測試字元串內的模式。 例如,可以測試輸入字元串,以查看字元串內是否出現電話號碼模式或信用卡號碼模式。這稱為數據驗證。 2,替換文本。 可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。 3,基於模式匹配從字元串中提取子字元串。 可以查找文檔 ...
  • 1.邏輯運算符 邏輯與 && 並且 and 邏輯或 || 或者 or 邏輯非 ! 取反 not 2.邏輯運算符連接起來的式子就是邏輯表達式 邏輯表達式結果: 布爾類型的值, var num1 = 10; var num2 = 20; console.log(num1 0 && num2 邏輯與&& ...
  • pow 求誰的多少次方 四捨五入 向上取整 向下取整 求一堆數的最大值 求一堆數的最小值 求隨機數 0 1之間的數 ...
  • 交換2個number類型的變數的值,不能使用第三方變數 ...
  • 1.彈出框 ,小括弧中就是彈出的內容 alert("我是一個彈出框"); 2.控制台輸出 小括弧裡面就是 控制台輸出的東西 console.log("我是控制台輸出的內容"); 3.彈出輸入框,可以接受用戶輸入的信息。 3.1 prompt("請輸入你的名字"); 3.2 prompt("請輸入你的 ...
  • vue——props的兩種常用方法 1、實現父—— 子的通信 舉例如下: 父組件 parent.vue <children :channel="object1" </children 子組件 children.vue export default{ name:"children", pr ...
  • 背景圖片自適應瀏覽器大小 之前在網上看到的一個小技巧,記錄一下:背景圖片鋪滿屏幕並且可以隨著瀏覽器進行自適應,代碼如下: <body <div style="position:absolute; width:100%; height:100%; z index: 1" <img s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...