轉帖|行業資訊|編輯:鄭恭琳|2016-09-20 17:46:17.000|閱讀 520 次
概述:本文將向您介紹幾種使Javascript代碼變得更優雅的方法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
筆者以前寫Javascript的時候,經常會把代碼寫的又臭又長又啰嗦。在經過一段實踐的實踐和反思后,代碼的優雅性提高很多。
不寫分號能顯著讓代碼更加優雅,并少輕松你的雙手。
可能很多人會有疑問,沒有分號的Javascript也能正常運行?
幾乎是的。不過在一些特殊的時候Javascript引擎并不會幫助你正確插入分號。
具體的情況只有這五個符號: + , - , ( , [ , / 沒了。
也就是說,凡是新的一行代碼以上述五個符號開頭,那么之前一句的末尾是需要分號的。
而在實際情況中,以+,- 開頭的新一行代碼幾乎不可能出現。 所以可能情況:
(function(){ // do something })()
如果之前沒加分號,那么這個匿名函數外的括號會調用上一行定義的函數,匿名函數就變成了參數。記住下面的這個分號:
;(function(){ // do something })()
還有比如這樣:
;(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)...
來源:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn