Web前端開發(fā)規(guī)范

代碼規(guī)范

DOCTYPE 聲明(視具體情況而定喂饥,一般采用HTML5的聲明)

HTML文件必須加上 DOCTYPE 聲明妄讯,并統(tǒng)一使用 HTML5 的文檔聲明:
<!DOCTYPE html>

頁面語言LANG

推薦使用屬性值 cmn-Hans-CN(簡體, 中國大陸),但是考慮瀏覽器和操作系統(tǒng)的兼容性鸟顺,目前仍然使用 zh-CN 屬性值
<html lang="zh-CN">
其他地區(qū)語言參考:

zh-SG 中文 (簡體, 新加坡)   對應 cmn-Hans-SG 普通話 (簡體, 新加坡)
zh-HK 中文 (繁體, 香港)     對應 cmn-Hant-HK 普通話 (繁體, 香港)
zh-MO 中文 (繁體, 澳門)     對應 cmn-Hant-MO 普通話 (繁體, 澳門)
zh-TW 中文 (繁體, 臺灣)     對應 cmn-Hant-TW 普通話 (繁體, 臺灣)

CHARSET

一般情況下統(tǒng)一使用 “UTF-8” 編碼
<meta charset="UTF-8">
由于歷史原因惦蚊,有些業(yè)務可能會使用 “GBK” 編碼
<meta charset="GBK">

元素及標簽閉合

HTML元素共有以下5種:

空元素:area、base讯嫂、br养筒、col、command端姚、embed晕粪、hr、img渐裸、input巫湘、keygen装悲、link、meta尚氛、param诀诊、source、track阅嘶、wbr
原始文本元素:script属瓣、style
RCDATA元素:textarea、title
外來元素:來自MathML命名空間和SVG命名空間的元素讯柔。
常規(guī)元素:其他HTML允許的元素都稱為常規(guī)元素抡蛙。
  • 原始文本元素、RCDATA元素以及常規(guī)元素都有一個開始標簽來表示開始魂迄,一個結(jié)束標簽來表示結(jié)束粗截。
  • 某些元素的開始和結(jié)束標簽是可以省略的,如果規(guī)定標簽不能被省略捣炬,那么就絕對不能省略它熊昌。
  • 空元素只有一個開始標簽,且不能為空元素設置結(jié)束標簽湿酸。
  • 外來元素可以有一個開始標簽和配對的結(jié)束標簽婿屹,或者只有一個自閉合的開始標簽,且后者情況下該元素不能有結(jié)束標簽推溃。
    推薦:
<div>
    <h1>我是h1標題</h1>
    <p>我是一段文字选泻,我有始有終,瀏覽器能正確解析</p>
</div>
<br>

不推薦:

<div>
    <h1>我是h1標題</h1>
    <p>我是一段文字美莫,我有始無終,瀏覽器亦能正確解析
</div>
<br/>

書寫風格

HTML標簽名梯捕、類名厢呵、標簽屬性和大部分屬性值統(tǒng)一用小寫
推薦:

<div class="demo"></div>

不推薦:

<div class="DEMO"></div>
<DIV CLASS="DEMO"></DIV>

HTML文本、CDATA傀顾、JavaScript襟铭、meta標簽某些屬性等內(nèi)容可大小寫混合

<!-- 優(yōu)先使用 IE 最新版本和 Chrome Frame -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<!-- HTML文本內(nèi)容 -->
<h1>I AM WHAT I AM </h1>
<!-- JavaScript 內(nèi)容 -->
<script type="text/javascript">
    var demoName = 'demoName';
    ...
</script>   
<!-- CDATA 內(nèi)容 -->
<script type="text/javascript"><![CDATA[
...
]]></script>

類型屬性

不需要為 CSS、JS 指定類型屬性短曾,HTML5 中默認已包含
推薦:

<link rel="stylesheet" href="" >
<script src=""></script>

不推薦:

<link rel="stylesheet" type="text/css" href="" >
<script type="text/javascript" src="" ></script>

元素屬性

元素屬性值使用雙引號語法
元素屬性值可以寫上的都寫上

推薦:

<input type="text">
<input type="radio" name="name" checked="checked" >

不推薦:

<input type=text>   
<input type='text'>
<input type="radio" name="name" checked >

特殊字符的應用

文本可以和字符引用混合出現(xiàn)寒砖。這種方法可以用來轉(zhuǎn)義在文本中不能合法出現(xiàn)的字符。
推薦:

<a href="#">more&gt;&gt;</a>

不推薦:

<a href="#">more>></a>

更多關(guān)于符號引用:#Character references

代碼縮進

統(tǒng)一使用四個空格進行代碼縮進嫉拐,使得各編輯器表現(xiàn)一致(各編輯器有相關(guān)配置)

<div class="jdc">
    <a href="#"></a>
</div>

純數(shù)字輸入

使用 type="tel" 而不是 type="number"

<input type="tel">

代碼嵌套

元素嵌套規(guī)范哩都,每個塊狀元素獨立一行,內(nèi)聯(lián)元素可選
推薦:

<div>
    <h1></h1>
    <p></p>
</div>  
<p><span></span><span></span></p>

不推薦:

<div>
    <h1></h1><p></p>
</div>  
<p> 
    <span></span>
    <span></span>
</p>

段落元素與標題元素只能嵌套內(nèi)聯(lián)元素
推薦:

<h1><span></span></h1>
<p><span></span><span></span></p>

不推薦:

<h1><div></div></h1>
<p><div></div><div></div></p>

注釋規(guī)范

標準寫法:

<!--Comment Text-->

單行注釋:一般用于簡單的描述婉徘,如某些狀態(tài)描述漠嵌、屬性描述等(注釋內(nèi)容前后各一個空格字符咐汞,注釋位于要注釋代碼的上面,單獨占一行)
推薦:

<!-- Comment Text -->
<div>...</div>

不推薦:

<div>...</div><!-- Comment Text -->     
<div><!-- Comment Text -->
    ...
</div>

模塊注釋:一般用于描述模塊的名稱以及模塊開始與結(jié)束的位置(注釋內(nèi)容前后各一個空格字符儒鹿, 表示模塊開始化撕, 表示模塊結(jié)束,模塊與模塊之間相隔一行)
推薦:

<!-- S Comment Text A -->   
<div class="mod_a">
    ...
</div>
<!-- E Comment Text A -->
    
<!-- S Comment Text B -->   
<div class="mod_b">
    ...
</div>
<!-- E Comment Text B -->

不推薦:

<!-- S Comment Text A -->
<div class="mod_a">
    ...
</div>
<!-- E Comment Text A -->
<!-- S Comment Text B -->   
<div class="mod_b">
    ...
</div>
<!-- E Comment Text B -->

文件模板

HTML模版指的是團隊使用的初始化HTML文件约炎,里面會根據(jù)不同平臺而采用不一樣的設置植阴,一般主要不同的設置就是 mata 標簽的設置,以下是 PC 和移動端的 HTML 模版圾浅。

HTML5標準模版
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>HTML5標準模版</title>
</head>
<body>
    
</body>
</html>
移動端
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" >
<meta name="format-detection" content="telephone=no" >
<title>移動端HTML模版</title>
    
<!-- S DNS預解析 -->
<link rel="dns-prefetch" href="">
<!-- E DNS預解析 --> 

<!-- S 線上樣式頁面片掠手,開發(fā)請直接取消注釋引用 -->
<!-- #include virtual="" -->
<!-- E 線上樣式頁面片 -->

<!-- S 本地調(diào)試,根據(jù)開發(fā)模式選擇調(diào)試方式贱傀,請開發(fā)刪除 --> 
<link rel="stylesheet" href="css/index.css" >
<!-- /本地調(diào)試方式 -->

<link rel="stylesheet" href="http://srcPath/index.css" >
<!-- /開發(fā)機調(diào)試方式 -->
<!-- E 本地調(diào)試 -->

</head>
<body>

</body>
</html>
PC端
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="keywords" content="your keywords">
<meta name="description" content="your description">
<meta name="author" content="author,email address">
<meta name="robots" content="index,follow">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="renderer" content="ie-stand">
<title>PC端HTML模版</title>

<!-- S DNS預解析 --> 
<link rel="dns-prefetch" href="">
<!-- E DNS預解析 --> 

<!-- S 線上樣式頁面片惨撇,開發(fā)請直接取消注釋引用 -->
<!-- #include virtual="" -->
<!-- E 線上樣式頁面片 -->

<!-- S 本地調(diào)試,根據(jù)開發(fā)模式選擇調(diào)試方式府寒,請開發(fā)刪除 --> 
<link rel="stylesheet" href="css/index.css" >
<!-- /本地調(diào)試方式 -->

<link rel="stylesheet" href="http://srcPath/index.css" >
<!-- /開發(fā)機調(diào)試方式 -->
<!-- E 本地調(diào)試 -->

</head>
<body>

</body>
</html>

圖片格式

常見的圖片格式有 GIF魁衙、PNG8、PNG24株搔、JPEG剖淀、WEBP,根據(jù)圖片格式的特性和場景需要選取適合的圖片格式纤房。
GIF(一般用作動圖纵隔,不適合圖片)

優(yōu)秀的壓縮算法使其在一定程度上保證圖像質(zhì)量的同時將體積變得很小。
可插入多幀炮姨,從而實現(xiàn)動畫效果捌刮。
可設置透明色以產(chǎn)生對象浮現(xiàn)于背景之上的效果。
由于采用了8位壓縮舒岸,最多只能處理256種顏色绅作,故不宜應用于真彩色圖片。

PNG

支持256色調(diào)色板技術(shù)蛾派,文件體積小俄认。
無損壓縮
最高支持48位真彩色圖像以及16位灰度圖像。
支持Alpha通道的透明/半透明特性洪乍。
支持圖像亮度的Gamma校準信息眯杏。
支持存儲附加文本信息,以保留圖像名稱壳澳、作者岂贩、版權(quán)、創(chuàng)作時間巷波、注釋等信息河闰。
漸近顯示和流式讀寫科平,適合在網(wǎng)絡傳輸中快速顯示預覽效果后再展示全貌。
使用CRC防止文件出錯姜性。
最新的PNG標準允許在一個文件內(nèi)存儲多幅圖像瞪慧。

JPEG

適用于儲存24位元全采影像
采取的壓縮方式通常為有損壓縮
不支持透明或動畫
壓縮比越高影像耗損越大,失真越嚴重
壓縮比在10左右肉眼無法分辨出壓縮圖與原圖的差別

WEBP

   同時提供有損壓縮和無損壓縮兩種圖片文件格式
   文件體積小部念,無損壓縮后弃酌,比 PNG 文件少了 45% 的文件大小儡炼;有損壓縮后妓湘,比 JPEG 文件少了 25% - 34% 文件大小
  瀏覽器兼容差,目前只支持客戶端 Chrome 和 Opera 瀏覽器以及安卓原生瀏覽器(Andriod 4.0+)

如何采用:
內(nèi)容圖:
優(yōu)先考慮 JPEG 格式,條件允許的話優(yōu)先考慮 WebP 格式
背景圖:
PNG 與 GIF 格式乌询,優(yōu)先考慮使用 PNG 格式,PNG格式允許更多的顏色并提供更好的壓縮率

圖片引入

HTML 中圖片引入不需添加 width榜贴、height 屬性,alt 屬性應該寫上
推薦:

<img src="" alt="" >

不推薦:

<img src="" width="" height="" >

CSS 中圖片引入不需要引號

z.jdc {
    background-image: url(icon.png);
}

CSS規(guī)范

代碼格式化(建議采用展開型妹田,建議統(tǒng)一采用小寫方式,每個屬性聲明末尾必須加分號 ; )

緊湊型:
.jdc{ display: block;width: 50px;}
展開型:
.jdc{
    display: block;
    width: 50px;
}

選擇器

盡量少用通用選擇器
不使用 ID 選擇器
不使用無具體語義定義的標簽選擇器

/* 推薦 */
.jdc {}
.jdc li {}
.jdc li p{}

/* 不推薦 */
*{}
#jdc {}
.jdc div{}

屬性書寫方式

布局定位屬性:display / position / float / clear / visibility / overflow
自身屬性:width / height / margin / padding / border / background
文本屬性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
其他屬性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …

.jdc {
    display: block;
    position: relative;
    float: left;
    width: 100px;
    height: 100px;
    margin: 0 10px;
    padding: 20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color: #333;
    background: rgba(0,0,0,.5);
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

瀏覽器私有前置寫法

CSS3 瀏覽器私有前綴在前唬党,標準前綴在后
.jdc {
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

命名規(guī)范

目錄命名

項目文件夾:projectname
樣式文件夾:css
腳本文件夾:js
樣式類圖片文件夾:img

圖片命名(圖片業(yè)務(可選) +(mod_)圖片功能類別(必選)+ 圖片模塊名稱(可選) + 圖片精度(可選))

圖片業(yè)務:
pp_:拍拍
wx_:微信
sq_:手Q
jd_:京東商城
…
圖片功能類別:

mod_:是否公共,可選
icon:模塊類固化的圖標
logo:LOGO類
spr:單頁面各種元素合并集合
btn:按鈕
bg:可平鋪或者大背景
…
圖片模塊名稱:

goodslist:商品列表
goodsinfo:商品信息
userava tar:用戶頭像
…
圖片精度:

普清:@1x
Retina:@2x | @3x
…

HTML/CSS命名

確保文件命名總是以字母開頭而不是數(shù)字鬼佣,且字母一律小寫驶拱,以下劃線連接且不帶其他標點符號,如:

<!-- HTML -->
jdc.html
jdc_list.html
jdc_detail.html

<!-- SASS -->
jdc.scss
jdc_list.scss
jdc_detail.scss

ClassName命名

ClassName的命名應該盡量精短晶衷、明確蓝纲,必須以字母開頭命名,且全部字母為小寫晌纫,單詞之間統(tǒng)一使用下劃線 “_” 連接

基于姓氏命名法(繼承 + 外來)
<div class="modulename">
    <div class="modulename_info">
        <div class="modulename_son"></div>
        <div class="modulename_son"></div>
        ...
    </div>
</div>
    
<!-- 這個是全站公用模塊税迷,祖先模塊允許直接出現(xiàn)下劃線 -->
<div class="mod_info">
    <div class="mod_info_son"></div>
    <div class="mod_info_son"></div>
    ...     
</div>

不推薦:
<div class="modulename_info">
    <div class="modulename_info_son"></div>
    <div class="modulename_info_son"></div>
    ...     
</div>

在子孫模塊數(shù)量可預測的情況下,嚴格繼承祖先模塊的命名前綴
<div class="modulename">
    <div class="modulename_cover"></div>
    <div class="modulename_info"></div>
</div>

當子孫模塊超過4級或以上的時候锹漱,可以考慮在祖先模塊內(nèi)具有識辨性的獨立縮寫作為新的子孫模塊

推薦:
<div class="modulename">
    <div class="modulename_cover"></div>
    <div class="modulename_info">
        <div class="modulename_info_user">
            <div class="modulename_info_user_img">
                <img src="" alt="">
                <!-- 這個時候 miui 為 modulename_info_user_img 首字母縮寫-->
                <div class="miui_tit"></div>
                <div class="miui_txt"></div>
                ...
            </div>
        </div>
        <div class="modulename_info_list"></div>
    </div>
</div>

不推薦:
<div class="modulename">
    <div class="modulename_cover"></div>
    <div class="modulename_info">
        <div class="modulename_info_user">
            <div class="modulename_info_user_img">
                <img src="" alt="">
                <div class="modulename_info_user_img_tit"></div>
                <div class="modulename_info_user_img_txt"></div>
                ...
            </div>
        </div>
        <div class="modulename_info_list"></div>
    </div>
</div>
模塊命名

全站公共模塊:以 mod_ 開頭
<div class="mod_yours"></div>
業(yè)務公共模塊:以 業(yè)務名mod 開頭
<div class="paipai_mod_yours"></div>

常用命名推薦

注意:ad箭养、banner、gg凌蔬、guanggao 等有機會和廣告掛勾的字眠不建議直接用來做ClassName,因為有些瀏覽器插件(Chrome的廣告攔截插件等)會直接過濾這些類名

ClassName   含義
about   關(guān)于
account 賬戶
arrow   箭頭圖標
article 文章
aside   邊欄
audio   音頻
avatar  頭像
bg,background   背景
bar 欄(工具類)
branding    品牌化
crumb,breadcrumbs   面包屑
btn,button  按鈕
caption 標題闯冷,說明
category    分類
chart   圖表
clearfix    清除浮動
close   關(guān)閉
col,column  列
comment 評論
community   社區(qū)
container   容器
content 內(nèi)容
copyright   版權(quán)
current 當前態(tài)砂心,選中態(tài)
default 默認
description 描述
details 細節(jié)
disabled    不可用
entry   文章,博文
error   錯誤
even    偶數(shù)蛇耀,常用于多行列表或表格中
fail    失敱绲(提示)
feature 專題
fewer   收起
field   用于表單的輸入?yún)^(qū)域
figure  圖
filter  篩選
first   第一個,常用于列表中
footer  頁腳
forum   論壇
gallery 畫廊
group   模塊纺涤,清除浮動
header  頁頭
help    幫助
hide    隱藏
hightlight  高亮
home    主頁
icon    圖標
info,information    信息
last    最后一個译暂,常用于列表中
links   鏈接
login   登錄
logout  退出
logo    標志
main    主體
menu    菜單
meta    作者抠忘、更新時間等信息欄,一般位于標題之下
module  模塊
more    更多(展開)
msg,message 消息
nav,navigation  導航
next    下一頁
nub 小塊
odd 奇數(shù)外永,常用于多行列表或表格中
off 鼠標離開
on  鼠標移過
output  輸出
pagination  分頁
pop,popup   彈窗
preview 預覽
previous    上一頁
primary 主要
progress    進度條
promotion   促銷
rcommd,recommendations  推薦
reg,register    注冊
save    保存
search  搜索
secondary   次要
section 區(qū)塊
selected    已選
share   分享
show    顯示
sidebar 邊欄崎脉,側(cè)欄
slide   幻燈片,圖片切換
sort    排序
sub 次級的伯顶,子級的
submit  提交
subscribe   訂閱
subtitle    副標題
success 成功(提示)
summary 摘要
tab 標簽頁
table   表格
txt,text    文本
thumbnail   縮略圖
time    時間
tips    提示
title   標題
video   視頻
wrap    容器囚灼,包,一般用于最外層
wrapper 容器祭衩,包灶体,一般用于最外層

JS規(guī)范

語言規(guī)范
基本類型

字符串
數(shù)值
布爾類型
null
undefined

const foo = 1
let bar = foo
bar = 9
console.log(foo, bar) // 1, 9

復雜數(shù)據(jù)類型

object
array
function

const foo = [1, 2, 3]
const bar = foo
bar[0] = 9
console.log(foo[0], bar[0]) // 9, 9

引用(const聲明常量,let聲明變量)
const 和 let 都是塊級作用域掐暮,var 是函數(shù)級作用域

對所有引用都使用 const蝎抽,不要使用 var
// bad
var a = 1
var b = 2

// good
const a = 1
const b = 2
如果引用是可變動的,則使用 let
// bad
var count = 1
if (count < 10) {
  count += 1
}

// good
let count = 1
if (count < 10) {
  count += 1
}

對象

請使用字面量值創(chuàng)建對象
// bad
const a = new Object{}

// good
const a = {}
別使用保留字作為對象的鍵值路克,這樣在 IE8 下不會運行
// bad
const a = {
  default: {},  // default 是保留字
  common: {}
}

// good
const a = {
  defaults: {},
  common: {}
}
請使用對象方法的簡寫方式
// bad
const item = {
  value: 1,
  addValue: function (val) {
    return item.value + val
  }
}

// good
const item = {
  value: 1,
  addValue(val) {
    return item.value + val
  }
}
請使用對象屬性值的簡寫方式
const job = 'FrontEnd'
// bad
const item = {
  job: job
}

// good
const item = {
  job
}
對象屬性值的簡寫方式要和聲明式的方式分組
const job = 'FrontEnd'
const department = 'JDC'

// bad
const item = {
  sex: 'male',
  job,
  age: 25,
  department
}

// good
const item = {
  job,
  department,
  sex: 'male',
  age: 25
}

數(shù)組

請使用字面量值創(chuàng)建數(shù)組
// bad
const items = new Array()

// good
const items = []
向數(shù)組中添加元素時樟结,請使用 push 方法
const items = []
// bad
items[items.length] = 'test'

// good
items.push('test')
使用拓展運算符 ... 復制數(shù)組
// bad
const items = []
const itemsCopy = []
const len = items.length
let i

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

// good
itemsCopy = [...items]

解構(gòu)賦值

當需要使用對象的多個屬性時,請使用解構(gòu)賦值
// bad
function getFullName (user) {
  const firstName = user.firstName
  const lastName = user.lastName
  return `${firstName} ${lastName}`
}

// good
function getFullName (user) {
  const { firstName, lastName } = user
  return `${firstName} ${lastName}`
}

// better
function getFullName ({ firstName, lastName }) {
  return `${firstName} ${lastName}`
}
當需要使用數(shù)組的多個值時衷戈,請同樣使用解構(gòu)賦值
const arr = [1, 2, 3, 4]

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

// good
const [first, second] = arr
函數(shù)需要回傳多個值時狭吼,請使用對象的解構(gòu),而不是數(shù)組的解構(gòu)
// bad
function doSomething () {
  return [top, right, bottom, left]
}

// 如果是數(shù)組解構(gòu)殖妇,那么在調(diào)用時就需要考慮數(shù)據(jù)的順序
const [top, xx, xxx, left] = doSomething()

// good
function doSomething () {
  return { top, right, bottom, left }
}

// 此時不需要考慮數(shù)據(jù)的順序
const { top, left } = doSomething()

字符串

字符串統(tǒng)一使用單引號的形式 ''
// bad
const department = "JDC"

// good
const department = 'JDC'
字符串太長的時候刁笙,請不要使用字符串連接符換行 \,而是使用 +
const str = '凹凸實驗室 凹凸實驗室 凹凸實驗室' +
  '凹凸實驗室 凹凸實驗室 凹凸實驗室' +
  '凹凸實驗室 凹凸實驗室'
程序化生成字符串時谦趣,請使用模板字符串
const test = 'test'

// bad
const str = ['a', 'b', test].join()

// bad
const str = 'a' + 'b' + test

// good
const str = `ab${test}`

函數(shù)

請使用函數(shù)聲明疲吸,而不是函數(shù)表達式
// bad
const foo = function () {
  // do something
}

// good
function foo () {
  // do something
}
不要在非函數(shù)代碼塊中聲明函數(shù)
// bad
if (isUse) {
  function test () {
    // do something
  }
}

// good
let test
if (isUse) {
  test = () => {
    // do something
  }
}
不要使用 arguments,可以選擇使用 ...
arguments 只是一個類數(shù)組前鹅,而 ... 是一個真正的數(shù)組
// bad
function test () {
  const args = Array.prototype.slice.call(arguments)
  return args.join('')
}

// good
function test (...args) {
  return args.join('')
}
不要更改函數(shù)參數(shù)的值
// bad
function test (opts) {
  opts = opts || {}
}

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

模塊

使用標準的 ES6 模塊語法 import 和 export
// bad
const util = require('./util')
module.exports = util

// good
import Util from './util'
export default Util

// better
import { Util } from './util'
export default Util
不要使用 import 的通配符 *摘悴,這樣可以確保你只有一個默認的 export
// bad
import * as Util from './util'

// good
import Util from './util'

對象屬性

使用 . 來訪問對象屬性
const joke = {
  name: 'haha',
  age: 28
}

// bad
const name = joke['name']

// good
const name = joke.name

代碼規(guī)范

單行代碼塊(在單行代碼塊中使用空格)

不推薦
function foo () {return true}
if (foo) {bar = 0}
推薦
function foo () { return true }
if (foo) { bar = 0 }

大括號風格(建議使用第一種)

One True Brace Style

if (foo) {
  bar()
} else {
  baz()
}

Stroustrup

if (foo) {
  bar()
}
else {
  baz()
}

Allman

if (foo)
{
  bar()
}
else
{
  baz()
}

變量命名(建議使用 駝峰式)
當命名變量時,主流分為駝峰式命名(variableName)和下劃線命名(variable_name)兩大陣營舰绘。
拖尾逗號(建議最后一個字面量可以不加拖尾逗號)

在 ECMAScript5 里面蹂喻,對象字面量中的拖尾逗號是合法的,但在 IE8(非 IE8 文檔模式)下捂寿,當出現(xiàn)拖尾逗號口四,則會拋出錯誤。
var foo = {
  name: 'foo',
  age: '22',
}

逗號空格
逗號前后的空格可以提高代碼的可讀性

不推薦
var foo = 1,bar = 2
var foo = 1 , bar = 2
var foo = 1 ,bar = 2

推薦
var foo = 1, bar = 2

逗號風格
標準風格秦陋,逗號放置在當前行的末尾
逗號前置風格蔓彩,逗號放置在下一行的開始位置

不推薦
var foo = 1
,
bar = 2
var foo = 1
, bar = 2
var foo = ['name'
          , 'age']

推薦
var foo = 1,
    bar = 2
var foo = ['name',
            'age']

計算屬性空格

不推薦
obj['foo' ]
obj[ 'foo']
obj[ 'foo' ]

推薦
obj['foo']

構(gòu)造函數(shù)首字母大寫

不推薦
var fooItem = new foo()

推薦
var fooItem = new Foo()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赤嚼,更是在濱河造成了極大的恐慌旷赖,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件更卒,死亡現(xiàn)場離奇詭異等孵,居然都是意外死亡,警方通過查閱死者的電腦和手機逞壁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門流济,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腌闯,你說我怎么就攤上這事绳瘟。” “怎么了姿骏?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵糖声,是天一觀的道長。 經(jīng)常有香客問我分瘦,道長蘸泻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任嘲玫,我火速辦了婚禮悦施,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘去团。我一直安慰自己抡诞,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布土陪。 她就那樣靜靜地躺著昼汗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鬼雀。 梳的紋絲不亂的頭發(fā)上顷窒,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音源哩,去河邊找鬼鞋吉。 笑死,一個胖子當著我的面吹牛励烦,可吹牛的內(nèi)容都是我干的谓着。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼崩侠,長吁一口氣:“原來是場噩夢啊……” “哼漆魔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起却音,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤改抡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后系瓢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阿纤,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年夷陋,在試婚紗的時候發(fā)現(xiàn)自己被綠了欠拾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡骗绕,死狀恐怖藐窄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酬土,我是刑警寧澤荆忍,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站撤缴,受9級特大地震影響刹枉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屈呕,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一微宝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虎眨,春花似錦蟋软、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涤躲,卻和暖如春棺耍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背种樱。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工蒙袍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫩挤。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓害幅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親岂昭。 傳聞我的和親對象是個殘疾皇子以现,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350