筆者之前寫Javascript的時候,常常會把代碼寫的又臭又長又囉嗦。在通過一段實踐的實踐和反思後,代碼的優雅性提升不少。javascript
不寫分號能顯著讓代碼更加優雅,並少輕鬆你的雙手。vue
可能不少人會有疑問,沒有分號的Javascript也能正常運行?java
幾乎是的。不過在一些特殊的時候Javascript引擎並不會幫助你正確插入分號。vue-router
具體的狀況只有這五個符號: + , - , ( , [ , / 沒了。vuex
也就是說,凡是新的一行代碼以上述五個符號開頭,那麼以前一句的末尾是須要分號的。express
而在實際狀況中,以+,- 開頭的新一行代碼幾乎不可能出現。 因此可能狀況:數組
(function(){ // do something })()
若是以前沒加分號,那麼這個匿名函數外的括號會調用上一行定義的函數,匿名函數就變成了參數。記住下面的這個分號:babel
;(function(){ // do something })()
還有好比這樣:dom
;(a == 1 || b == 1) && fn() ;[].slice.call() ;/abc/.test('abcd')
除了上面例子,幾乎沒有其餘情景須要加分號了。函數
因此常常遇到這種狀況,一個javascript文件裏幾百個分號全是不必的。
並且,一般在生產環境中會提早用uglify.js去壓縮代碼,或是用ES6時babel轉碼,這都會幫你補全分號。
因此還有什麼理由去寫分號呢?固然寫不寫分號也屬於我的習慣,知道何時分號是不可省的纔是重點。
PS:Vue.js的源碼就是不寫分號的。
相比較ES5,ES6的語法中的結構賦值,箭頭函數,模板字符串,對象的簡寫法等都能讓代碼變得乾淨利落。
好比一個判斷奇偶的函數:
function isEven(x){ return x % 2 == 0 }
ES6:
const isEven = x => x % 2 == 0
好比字符串拼接:
dom.innerHTML='Hello ' + name + ',How you today?'
ES6:
dom.innerHTML=`Hello ${name} How you today?`
邏輯運算符:
if (a == 1) { b() } //能夠寫成 a == 1 && b()
初始化變量:
var a = obj || {}
三元運算符:
var a = b % 2 == 0 ? 'even' : 'odd'
具體來講有這樣幾點:
變量聲明儘量的放在開頭,這樣有助於:
var a = 1 var b = 2 //換成 var a = 1, b = 2
有的時候也能夠把逗號寫在開頭,這樣比較方便加入新的變量:
var a = 1 ,b = 2 ,c = 3
var express = require('express') var path = require('path') var favicon = require('serve-favicon') var logger = require('morgan')
實際上用var的時候是能夠用逗號的。因此在ES6中更常常出現的狀況:
import Vue from 'vue' import VueResource from 'vue-resource' import VueValidator from 'vue-validator' import VueRouter from 'vue-router' import Vuex from 'vuex'
var $ = function(x){ return document.getElementById(x) }
若是代碼長到底部的滾動條都出現了,如何算得上優雅呢。
因此要保持每一行的代碼不要太長,具體有這樣須要注意的地方:
[].concat(arr).sort().forEach(fn)...
能夠改爲:
[].concat(arr) .sort() .forEach(fn)...
來源:簡書