縮進(jìn):每一行的層級(jí)由4個(gè)空格組成,避免使用Tab進(jìn)行縮進(jìn)。
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的川匯網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
行的長(zhǎng)度:每行長(zhǎng)度不應(yīng)超過(guò)80個(gè)字符。如果一行超過(guò)80個(gè)字符,應(yīng)當(dāng)在一個(gè)運(yùn)算符后換行。下一行應(yīng)當(dāng)增加兩級(jí)縮進(jìn)(8個(gè)字符)。
原始值:
字符串應(yīng)當(dāng)始終使用雙引號(hào)且保持一行,避免在字符串中使用斜線另起一行。
數(shù)字應(yīng)當(dāng)使用十進(jìn)制整數(shù),科學(xué)計(jì)算法表示整數(shù),十六進(jìn)制整數(shù),或者十進(jìn)制浮點(diǎn)小數(shù),小數(shù)前后應(yīng)當(dāng)至少保留一位數(shù)字。避免使用八進(jìn)制直接量。
特殊值null除了下述情況下應(yīng)當(dāng)避免使用。
用來(lái)初始化一個(gè)變量,這個(gè)變量可能被賦值為一個(gè)對(duì)象。
用來(lái)和一個(gè)已經(jīng)初始化的變量比較,這個(gè)變量可以是也可以不是一個(gè)對(duì)象。
當(dāng)函數(shù)的參數(shù)期望是對(duì)象時(shí),被用作參數(shù)傳入。
當(dāng)函數(shù)的返回值期望是對(duì)象時(shí),被用作返回值傳出。
避免使用特殊值undefined。判斷一個(gè)變量是否定義應(yīng)當(dāng)使用typeof操作符。
運(yùn)算符間距:二元預(yù)算符前后必須使用一個(gè)空格來(lái)保持表達(dá)式的整潔。操作符包括賦值運(yùn)算符和邏輯運(yùn)算符。
括號(hào)間距:當(dāng)使用括號(hào)時(shí),緊接左括號(hào)之后和緊接右括號(hào)之前不應(yīng)該有空格。
對(duì)象直接量:
對(duì)象直接量應(yīng)當(dāng)有如下格式。
①起始左花括號(hào)應(yīng)當(dāng)同表達(dá)式保持同一行。
②每個(gè)屬性的名值對(duì)應(yīng)當(dāng)保持一個(gè)縮進(jìn),第一個(gè)屬性應(yīng)當(dāng)在左花括號(hào)后另起一行。
③每個(gè)屬性的名值對(duì)應(yīng)當(dāng)使用不含引號(hào)的屬性名,其后緊跟一個(gè)冒號(hào)(之前不舍空格),其后是值。
④倘若屬性值是函數(shù)類型,函數(shù)體應(yīng)當(dāng)在屬性名之下另起一行,而且其前后均應(yīng)保留一個(gè)空行。
⑤一組相關(guān)的屬性前后可以插入空行以提升代碼的可讀性。
⑥結(jié)束的右花括號(hào)應(yīng)當(dāng)獨(dú)占一行。
注釋:使用簡(jiǎn)潔明了注釋有助于他人理解你的代碼。如下情況應(yīng)當(dāng)使用注釋。
①代碼晦澀難懂。
②可能被誤認(rèn)為錯(cuò)誤的代碼。
③必要但不明顯的針對(duì)特定瀏覽器的代碼。
④對(duì)于對(duì)象、方法或者屬性,生成文檔是有必要的(使用恰當(dāng)?shù)奈臋n注釋)。
單行注釋
①單行注釋?xiě)?yīng)當(dāng)用來(lái)說(shuō)明一行代碼或者一組相關(guān)的代碼。單行注釋可能有三種使用方式。
②獨(dú)占一行的注釋,用來(lái)解釋下一行代碼。
③在代碼行的尾部的注釋,用來(lái)解釋它之前的代碼。
④多行,用來(lái)注釋掉一個(gè)代碼塊。
多行注釋
多行注釋?xiě)?yīng)當(dāng)在代碼需要更多文字去解釋的時(shí)候使用。每個(gè)多行注釋都至少有如下三行:
①首行僅僅包括/*注釋開(kāi)始。該行不應(yīng)當(dāng)有其他文字。
②接下來(lái)的行以*開(kāi)頭并保持左對(duì)齊。這些可以有文字描述。
③最后一行以*/開(kāi)頭并同先前行保持對(duì)齊。也不應(yīng)有其他文字。
多行注釋的首行應(yīng)當(dāng)保持同它描述代碼的相同層次的縮進(jìn)。后續(xù)的每行應(yīng)當(dāng)有同樣層次的縮進(jìn)并附加一個(gè)空格(為了適當(dāng)保持*字符的對(duì)齊)。每一個(gè)多行代碼之前應(yīng)當(dāng)預(yù)留一個(gè)空行。
命名:變量和函數(shù)在命名時(shí)應(yīng)當(dāng)小心。命名應(yīng)緊限于數(shù)字字母字符,某些情況下可以使用下劃線(_)。最好不要在任何命名中使用美元符號(hào)($)或者反斜杠(\)。
變量命名應(yīng)當(dāng)采用駝峰命名格式,首字母小寫(xiě),每個(gè)單詞首字母大寫(xiě)。變量名的第一個(gè)單詞應(yīng)當(dāng)是一個(gè)名詞(而非動(dòng)詞)以避免同函數(shù)混淆。不要在變量名中使用下劃線。
函數(shù)名也應(yīng)當(dāng)采用駝峰命名格式。函數(shù)名的第一個(gè)單詞應(yīng)當(dāng)是動(dòng)詞(而非名詞)來(lái)避免同變量混淆。函數(shù)名中最好不要使用下劃線。
構(gòu)造函數(shù)--通過(guò)new運(yùn)算符創(chuàng)建新對(duì)象的函數(shù)--也應(yīng)當(dāng)以駝峰格式命名并且首字符大寫(xiě)。構(gòu)造函數(shù)名稱應(yīng)當(dāng)以非動(dòng)詞開(kāi)頭,因?yàn)閚ew代表著創(chuàng)建一個(gè)對(duì)象實(shí)例的操作。
常量(值不會(huì)被改變的變量)的命名應(yīng)當(dāng)是所有大寫(xiě)字母,不同單詞之間單個(gè)下劃線隔開(kāi)。
對(duì)象的屬性同變量的命名規(guī)則相同。對(duì)象的方法同函數(shù)的命名規(guī)則相同。如果屬性或者方法是私有的,應(yīng)當(dāng)在之前加上一個(gè)下劃線。
9. 變量與函數(shù)聲明:
變量聲明
所有的變量在使用前都應(yīng)當(dāng)事先定義。變量定義應(yīng)當(dāng)放在函數(shù)開(kāi)頭,使用一個(gè)var表達(dá)式每行一個(gè)變量。除了首行,所有行都應(yīng)當(dāng)多一層縮進(jìn)以使變量名能夠垂直方向?qū)R。變量定義時(shí)應(yīng)當(dāng)初始化,并且賦值操作符應(yīng)當(dāng)保持一致的縮進(jìn)。初始化的變量應(yīng)當(dāng)在未初始化變量之前。
函數(shù)聲明
函數(shù)應(yīng)當(dāng)在使用前提前定義。一個(gè)不是作為方法的函數(shù)(也就是說(shuō)沒(méi)有作為一個(gè)對(duì)象的屬性)應(yīng)當(dāng)使用函數(shù)定義的格式(不是函數(shù)表達(dá)式和Function構(gòu)造器格式)。函數(shù)名和開(kāi)始圓括號(hào)之間不應(yīng)當(dāng)有空格。結(jié)束的圓括號(hào)和右邊的花括號(hào)之間應(yīng)當(dāng)留一個(gè)空格。右側(cè)的花括號(hào)應(yīng)當(dāng)同function關(guān)鍵字保持同一行。開(kāi)始和結(jié)束括號(hào)之間不應(yīng)該有空格。參數(shù)名之間應(yīng)當(dāng)在逗號(hào)之后保留一個(gè)空格。函數(shù)體應(yīng)當(dāng)保持一級(jí)縮進(jìn)。
匿名函數(shù)
可能作為方法賦值給對(duì)象,或者作為其他函數(shù)的參數(shù)。function關(guān)鍵字同開(kāi)始括號(hào)之間不應(yīng)有空格。
立即被調(diào)用的函數(shù)應(yīng)當(dāng)在函數(shù)調(diào)用的外層用園括號(hào)包裹。
嚴(yán)格模式應(yīng)當(dāng)僅限在函數(shù)內(nèi)部使用,千萬(wàn)不要在全局使用。
10. 運(yùn)算符:
賦值
給變量賦值時(shí),如果右側(cè)是含有比較語(yǔ)句的表達(dá)式,需要用圓括號(hào)包裹。
等號(hào)運(yùn)算符
使用===(嚴(yán)格相等)和!==(嚴(yán)格不相等)代替==(相等)和!=(不等)來(lái)避免弱類型轉(zhuǎn)換錯(cuò)誤。
三元操作符
三元運(yùn)算符應(yīng)當(dāng)僅僅用在條件賦值語(yǔ)句中,而不要作為if語(yǔ)句的替代品。
11. ?語(yǔ)句:
簡(jiǎn)單語(yǔ)句
每一行最多只包含一條語(yǔ)句。所有簡(jiǎn)單的語(yǔ)句都應(yīng)該以分號(hào)(;)結(jié)束。
返回語(yǔ)句
返回語(yǔ)句當(dāng)返回一個(gè)值的時(shí)候不應(yīng)當(dāng)使用圓括號(hào)包裹,除非在某些情況下這么做可以讓返回值更容易理解。
復(fù)合語(yǔ)句
復(fù)合語(yǔ)句是大括號(hào)括起來(lái)的語(yǔ)句列表。
括起來(lái)的語(yǔ)句應(yīng)當(dāng)較復(fù)合語(yǔ)句多縮進(jìn)一個(gè)層級(jí)。
開(kāi)始的大括號(hào)應(yīng)當(dāng)在復(fù)合語(yǔ)句所在行的末尾;結(jié)束的大括號(hào)應(yīng)當(dāng)獨(dú)占一行且同復(fù)合語(yǔ)句的開(kāi)始保持同樣的縮進(jìn)。
當(dāng)語(yǔ)句是控制結(jié)構(gòu)的一部分時(shí),諸如if或者for語(yǔ)句,所有語(yǔ)句都需要用大括號(hào)括起來(lái),也包括單個(gè)語(yǔ)句。這個(gè)約定使得我們更方便地添加語(yǔ)句而不用擔(dān)心忘記加括號(hào)而引起bug。
像if一樣的語(yǔ)句開(kāi)始的關(guān)鍵詞,其后應(yīng)該緊跟一個(gè)空格,起始大括號(hào)應(yīng)當(dāng)在空格之后。
12. 留白:
在邏輯相關(guān)的代碼之間添加空行代碼可以提高代碼的可讀性。
兩行空行僅限于在如下情況下使用:
在不同的源代碼文件之間。
在類和接口定義之間。
單行空行僅限在如下情況中使用。
方法之間。
方法中局部變量和第一行語(yǔ)句之間。
多行或者單行注釋之前。
方法中邏輯代碼塊之間以提升代碼的可讀性。
空格應(yīng)當(dāng)在如下的情況下使用。
關(guān)鍵詞后跟括號(hào)的情況應(yīng)當(dāng)用空格隔開(kāi)。
參數(shù)列表中逗號(hào)之后應(yīng)當(dāng)保留一個(gè)空格。
所有的除了點(diǎn)(.)之外的二元運(yùn)算符,其操作數(shù)都應(yīng)當(dāng)用空格隔開(kāi)。單目運(yùn)算符的操作數(shù)之間不應(yīng)該用空白隔開(kāi),例如一元減號(hào),遞增(++),遞減(--)。
for 語(yǔ)句的表達(dá)式之間應(yīng)當(dāng)用空格隔開(kāi)。
13. 需要避免的
切勿使用像String一類的原始包裝類型創(chuàng)建新的對(duì)象。
避免使用eval()。
避免使用with語(yǔ)句。該語(yǔ)句在嚴(yán)格模式中不復(fù)存在,可能在未來(lái)的ECMAScript標(biāo)準(zhǔn)中也將去除。
沒(méi)有絕對(duì)的準(zhǔn)則,只有適不適合。
因?yàn)樽龉し浅>?xì)。
JS屬于女裝類二線品牌,雖然是二線品牌,但是它的衣服做工非常精細(xì),穿著非常舒適,所以平時(shí)價(jià)格都好貴。
JS服裝設(shè)計(jì)風(fēng)格多為簡(jiǎn)約設(shè)計(jì),但會(huì)融入個(gè)性化元素,也會(huì)適當(dāng)?shù)娜谌氘?dāng)下流行的條紋、皺褶、荷葉邊等元素,優(yōu)雅又精致,更適合對(duì)設(shè)計(jì)感有要求的白領(lǐng)。
覺(jué)得自己寫(xiě)的亂,那是好事,正因?yàn)檫@樣,說(shuō)明你還有提升的空間
首先,通過(guò)你說(shuō)的表述,我感覺(jué),你覺(jué)得代碼亂,很大一部分是代碼書(shū)寫(xiě)方式上的不統(tǒng)一,這個(gè)的話呢,其實(shí)也簡(jiǎn)單,你可以使用eslint這樣的代碼規(guī)范校驗(yàn)工具,強(qiáng)制你們組寫(xiě)成一致的代碼,另一種呢,其實(shí)就更看個(gè)人了,就是說(shuō),要寫(xiě)盡量有意義的代碼,也就是說(shuō),你的變量的聲明,函數(shù)的聲明,都要讓人一眼能明白它是干嘛的。這樣的話,可讀性就好很多了。
還有一點(diǎn)需要注意的,就是代碼重構(gòu)方面的,就是單一職責(zé)的原則,一個(gè)函數(shù),只處理一件事情,一個(gè)文件只處理一類事情,一個(gè)類只代表某一種對(duì)象。如果你嚴(yán)格按照這種方式去寫(xiě)代碼,我覺(jué)得就不會(huì)亂。
最后呢,你說(shuō)不同的類庫(kù)之間風(fēng)格差異也很大,我覺(jué)得很正常啊,因?yàn)閷?duì)于你來(lái)說(shuō),你是使用者,是不用關(guān)注類庫(kù)的內(nèi)部實(shí)現(xiàn)的呀。他內(nèi)部怎么實(shí)現(xiàn)跟你關(guān)系也不大,只要能用,好用就行。所以說(shuō),你們組員之間寫(xiě)代碼要規(guī)范起來(lái),跟類庫(kù)就不用規(guī)范了,他愛(ài)怎么寫(xiě)怎么寫(xiě),跟你沒(méi)有關(guān)系,不過(guò)呢,有時(shí)候你可以去多閱讀下類庫(kù)的代碼,吸收一些經(jīng)驗(yàn)也不錯(cuò),加油。
推薦你一篇文章:javascript的一些命名約定,希望會(huì)對(duì)你有所幫助
網(wǎng)頁(yè)設(shè)計(jì)代碼中js指的是javascript,是一種具有函數(shù)優(yōu)先的輕量級(jí),解釋型或即時(shí)編譯型的高級(jí)編程語(yǔ)言,常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能。
JavaScript(簡(jiǎn)稱“JS”) 是一種具有函數(shù)優(yōu)先的輕量級(jí),解釋型或即時(shí)編譯型的高級(jí)編程語(yǔ)言。
雖然它是作為開(kāi)發(fā)Web頁(yè)面的腳本語(yǔ)言而出名的,但是它也被用到了很多非瀏覽器環(huán)境中,JavaScript 基于原型編程、多范式的動(dòng)態(tài)腳本語(yǔ)言,并且支持面向?qū)ο?、命令式和聲明?如函數(shù)式編程)風(fēng)格。
JavaScript是一種屬于網(wǎng)絡(luò)的高級(jí)腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開(kāi)發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過(guò)嵌入在HTML中來(lái)實(shí)現(xiàn)自身的功能的。
日常用途:嵌入動(dòng)態(tài)文本于HTML頁(yè)面;對(duì)瀏覽器事件做出響應(yīng);讀寫(xiě)HTML元素;在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù);檢測(cè)訪客的瀏覽器信息;控制cookies,包括創(chuàng)建和修改等;基于Node.js技術(shù)進(jìn)行服務(wù)器端編程。
javascript是在瀏覽器上執(zhí)行,php和asp都是在服務(wù)器上執(zhí)行,執(zhí)行的結(jié)果可以包含html、css、javascript等內(nèi)容,這些結(jié)果內(nèi)容發(fā)送到瀏覽器上才開(kāi)始工作。
代碼風(fēng)格上javascript和php都是類C的,asp是類BASIC的,括號(hào)、分號(hào)、相等判斷這些語(yǔ)法上有區(qū)別。
三者都是變量無(wú)需嚴(yán)格定義、和類型限制,但是在具體的作用域細(xì)節(jié)上又有差異。