摘要:前端的進(jìn)階其實(shí)和如何使用規(guī)范是完全相關(guān)的??偨Y(jié)起來整個(gè)流程就是無規(guī)范有規(guī)范無規(guī)范。另外,還有一個(gè)名叫的命令規(guī)范,不過他主要正對于的命名。我們來說說那些地方需要使用注釋。另外,規(guī)范當(dāng)然還有很多,比如縮進(jìn),空格,逗號等。
前端的進(jìn)階其實(shí)和如何使用規(guī)范是完全相關(guān)的。
新手: 啊,什么,這有規(guī)范嗎? 我不會(huì)誒 進(jìn)階: 恩,每次,這里需要加分號。 這個(gè)逗號應(yīng)該放這里... 大神: 啊,前端有規(guī)范嗎? 這里需要放分號,那里不需要放分號。 這里可以不大寫,我偏大寫。
總結(jié)起來整個(gè)流程就是:無規(guī)范 -> 有規(guī)范 -> 無規(guī)范。
所以,這里我們來談一談規(guī)范在前端的意義吧。由于,本人純屬小白,所以,咱不裝逼,我們談?wù)動(dòng)幸?guī)范的那一塊。%>_<%
其實(shí)前端規(guī)范,就這幾個(gè),命名,分隔符,縮進(jìn)等。
分號這個(gè)應(yīng)該算是我們最常見的,但是也是坑最多的一個(gè)。即,每條語句結(jié)尾都需要加分號.
我們來看個(gè)例子:
var a = 2 2 console.log(a); //2
本來我們想要的結(jié)果應(yīng)該是a=22,但是現(xiàn)實(shí)往往是不要臉的。他的結(jié)果是2。
為什么呢? 為什么呢? 為什么呢?
我們來看一下ECMA的對此的解釋。
我們只在看起來像是一條語句的后面加上分號表示一句
實(shí)際上其實(shí)是這樣的:
var a = 2; 2;
所以,一條語句寫完之后別手賤 換行,因?yàn)槟悴恢滥阏谧鲆患?keai的事,而且每條語句最好都加上分號,至少不會(huì)出錯(cuò)。
好吧,還說服不了你的話。我們來看一個(gè)經(jīng)典的問題
;(function(){ // ... })();
如果 你看過一些插件的話,應(yīng)該會(huì)發(fā)現(xiàn)這個(gè)普遍的現(xiàn)象。
為什么呢? 為什么呢? 為什么呢?
為了防止出Bug呀。。。 艸
咳咳~ 開玩笑,
舉個(gè)實(shí)例吧。
var speak = function(para){console.log(para); return "speak is "+para;} ("I want to Speak").toString(); console.log(speak);
如果看代碼的話,應(yīng)該能讀懂我的意圖吧? 但是,js解釋器,從不給你解釋的機(jī)會(huì)。
上面代碼的結(jié)果是:
I want to Speak speak is I want to Speak
我真*了狗。第一個(gè)I want to Speak 是函數(shù)表達(dá)式里面的console.log(para)里面的。第二個(gè) "speak is I want to Speak" 就是console.log(speak)里面的內(nèi)容了。
總結(jié)一下,原因,我們最怕遇見這種情況,在函數(shù)后面使用"()"就相當(dāng)于調(diào)用該函數(shù)并且傳入?yún)?shù),所以上面執(zhí)行情況是。
var speak = function(para){console.log(para); return "speak is "+para}("I want to Seapk").toString(); //首先獲得函數(shù)表達(dá)式的執(zhí)行結(jié)果. function(para){console.log(para); return "speak is "+para}("I want to Seapk") //然后將結(jié)果內(nèi)容toString,返回給speak speak = xxx.toString(); //返回的結(jié)果
所以,懂了吧, 一些插件之所以要在IIFE前面加上";"就是這個(gè)道理。 加分號的時(shí)候,我們一定要不怕苦,不怕累,就怕出bug。
命名普遍而言,我們最常使用的就是兩種方法。
給類命名(原諒我說類)--使用首字母大寫的camel式
var person = new People(); //People就是使用首字母大寫的camel式
給變量命名--使用首字母小寫的camel式
var myBook = new Books(); //myBook就是采用變量名的命名
當(dāng)然,這個(gè)只是命名的簡單兩種方法,也是廣為接受的。另外,還有一個(gè)名叫"BEM"的命令規(guī)范,不過他主要正對于css的命名。如果感興趣的同學(xué)可以了解一下: 傳送門。
注釋感覺在js里面真的是弱化了注釋的效果, 從以前幾十行代碼就可以寫完的一個(gè)js,到現(xiàn)在的大型webApp,單頁應(yīng)用,你再寫30+的js試一試。 所以,可能是被遺傳了吧,我大部分的朋友都不喜歡寫注釋,但這里真的希望大家在寫代碼的時(shí)候一定要多寫注釋。 坊間有個(gè)不成文的規(guī)定,如果你的注釋不占你程序的2/3的話,你這個(gè)程序won"t pass. 同時(shí),寫注釋也是給你的接手人,一個(gè)很好的指導(dǎo)意義。
通常我們寫注釋可以直接使用快捷鍵:
//windows ctrl+/ //MAC command+/
這樣方便,易記。
我們來說說那些地方需要使用注釋。
文件開頭:一個(gè)main.js的開頭需要使用注釋,來說明你js文件的相關(guān)信息,以及功能描述。通常是:
/** * @author jimmy * @file Image.js * @description 功能詳細(xì)描述 */
重要函數(shù):給你的函數(shù)加上一些基本描述是很有必要的。通常有功能,參數(shù)效果,是否有返回值。
/** * 簡述 * * 功能詳細(xì)描述 * * @paramarg1 參數(shù)1 * @param arg2 參數(shù)2,默認(rèn)為0 * @return 看xxx是否成功 */ function doSth (arg1, arg2) { }
重要語句:其實(shí)js程序里面,要么不是函數(shù),要么就是單語句。關(guān)于語句的注釋應(yīng)該沒什么說的。 就是在每行語句上,加上一條注釋,可以不用上面這么復(fù)雜的,直接使用command + /即可。
//是否登錄 var isOk = isLogin?true:false;
OK,注釋差不多就是這幾個(gè)部分。
另外,js規(guī)范當(dāng)然還有很多,比如縮進(jìn),空格,逗號等。,(艸)
寶寶不想說啦。 其實(shí)這些規(guī)范你使用code pretty一下就好看了。如果你使用sublime 你可以下一個(gè)package HTML pretty 等相關(guān)的代碼美化插件。都是可以的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/78635.html
摘要:單線程就意味著,所有任務(wù)需要排隊(duì),前一個(gè)任務(wù)結(jié)束,才會(huì)執(zhí)行后一個(gè)任務(wù)。這決定了它只能是單線程,否則會(huì)帶來很復(fù)雜的同步問題。小結(jié)本身是單線程的,并沒有異步的特性。當(dāng)異步函數(shù)執(zhí)行時(shí),回調(diào)函數(shù)會(huì)被壓入這個(gè)隊(duì)列。 走在前端的大道上 本篇將自己讀過的相關(guān) js異步 的文章中,對自己有啟發(fā)的章節(jié)片段總結(jié)在這(會(huì)對原文進(jìn)行刪改),會(huì)不斷豐富提煉總結(jié)更新。 概念 JS 是單線程的語言。 單線程就意味著...
摘要:我是一名光榮的前端工程師,一直從事前端的開發(fā)工作。但是開發(fā)是前后端分離開發(fā),通過進(jìn)行交互,客戶端請求服務(wù)器返回?cái)?shù)據(jù),由客戶端進(jìn)行渲染。因?yàn)榍岸舜a和后臺代碼都是分開的,所以項(xiàng)目更容易維護(hù),開發(fā)效率更高。 我是一名光榮的前端工程師,一直從事web前端的開發(fā)工作。當(dāng)時(shí)可以說是零基礎(chǔ)入門,之前因?yàn)榍岸说膆tml、css、js比較好學(xué),所以也愚蠢的認(rèn)為web前端很簡單,很沒有技術(shù)含量。當(dāng)然不僅...
摘要:我是一名光榮的前端工程師,一直從事前端的開發(fā)工作。但是開發(fā)是前后端分離開發(fā),通過進(jìn)行交互,客戶端請求服務(wù)器返回?cái)?shù)據(jù),由客戶端進(jìn)行渲染。因?yàn)榍岸舜a和后臺代碼都是分開的,所以項(xiàng)目更容易維護(hù),開發(fā)效率更高。 我是一名光榮的前端工程師,一直從事web前端的開發(fā)工作。當(dāng)時(shí)可以說是零基礎(chǔ)入門,之前因?yàn)榍岸说膆tml、css、js比較好學(xué),所以也愚蠢的認(rèn)為web前端很簡單,很沒有技術(shù)含量。當(dāng)然不僅...
摘要:大家好,好久沒有寫公眾號了,最近有朋友參加面試被問到開發(fā)規(guī)范的問題,突然發(fā)現(xiàn)每天干著工作,卻沒有關(guān)注這個(gè)問題,就想著寫篇文章,簡單的說下自己公司的開發(fā)規(guī)范。 大家好,好久沒有寫公眾號了,最近有朋友參加面試被問到開發(fā)規(guī)范的問題,突然發(fā)現(xiàn)每天干著工作,卻沒有關(guān)注這個(gè)問題,就想著寫篇文章,簡單的說下自己公司的開發(fā)規(guī)范。 showImg(https://segmentfault.com/img...
閱讀 1020·2021-10-27 14:14
閱讀 1796·2021-10-11 10:59
閱讀 1384·2019-08-30 13:13
閱讀 3211·2019-08-29 15:17
閱讀 2811·2019-08-29 13:48
閱讀 543·2019-08-26 13:36
閱讀 2160·2019-08-26 13:25
閱讀 907·2019-08-26 12:24