成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

谷歌的JavaScript編寫風格中 13點值得我們注意的!

瀏覽:156日期:2023-11-10 09:11:54

對于那些還不熟悉JavaScript的編寫風格的人,谷歌提供了編寫JavaScript的編寫風格指南,谷歌風格指南 其中列出了編寫干凈、可理解代碼的最佳風格實踐。

谷歌的JavaScript編寫風格中 13點值得我們注意的!

對于編寫有效的JavaScript來說,這些并不是硬性的、快速的規則,而只是在源文件中維護一致的、吸引人的樣式選擇的規則。這對于JavaScript來說尤其有趣,它是一種靈活且多變的語言,允許多種風格的選擇。

谷歌和Airbnb有兩個最受歡迎的編寫風格指南。如果我的工作是花費大量時間編寫JS,那么可以先學習這兩種方法。

以下是谷歌JS風格指南中我認為最有趣和相關的13條規則:

谷歌JS風格指南處理各種各樣的問題,從激烈爭論的問題(制表符與空格的比較,以及分號應該如何使用這個有爭議的問題),到一些更模糊的規范,這些規范令我吃驚,它們肯定會改變我以后寫JS的方式。

對于每個規則,我將對規范進行總結,然后引用樣式指南中的支持部分,詳細描述該規則。在適用的情況下,我還將提供實踐中的樣式示例,并將其與不遵循規則的代碼進行對比。

使用空格,而不是制表符除了行結束符序列之外,ASCII水平空格字符(0x20)是源文件中出現在任何位置的惟一空格字符。這意味著…制表符不用于縮進

使用兩個空格(而不是四個)進行縮進

// badfunction foo() {????let name;}// badfunction bar() {?let name;}// goodfunction baz() {??let name;}

分號是必需的

每個語句必須以分號結束,禁止依靠自動分號插入。

雖然無法想象為什么會有人反對這個想法,但JS中分號的一致使用正在成為新的“空格對制表符”的爭論。谷歌一慣建議結束需要使用分號。

// badlet luke = {}let leia = {}[luke, leia].forEach(jedi => jedi.father = 'vader')// goodlet luke = {};let leia = {};[luke, leia].forEach((jedi) => { jedi.father = 'vader';});

不要使用ES6模塊

不要使用ES6模塊(即導出和導入關鍵字),因為它們的語義還沒有最終確定。注意,一旦語義完全標準,將重新定義使用的方式。

// 先別做這種事//------ lib.js ------export function square(x) { return x * x;}export function diag(x, y) { return sqrt(square(x) + square(y));}//------ main.js ------import { square, diag } from 'lib';

不鼓勵(但不禁止)水平對齊

這種做法是允許的,但谷歌編寫風格通常不鼓勵這樣做,甚至不需要在已經使用它的地方保持水平對齊。

水平對齊是在代碼中添加可變數量的額外空格,以使某行變量的值與前面變量值對齊。

// bad{ tiny: 42, longer: 435, };// good{ tiny: 42, longer: 435,};

不要再使用var了

使用const或let聲明所有本地變量來代替 var。默認情況下使用 const,除非需要重新分配變量在使用 let 聲明。

// badvar example = 42;// goodlet example = 42;

箭頭函數是首選

箭頭函數提供了簡潔的語法,并解決了this 在函數中不確定性的一些問題,與function關鍵字相比,更喜歡箭頭函數,特別是對于嵌套函數。

老實說,我只是覺得箭頭函數很棒因為它們更簡潔,更美觀。事實證明,它們還有一個非常重要的用途。

// bad[1, 2, 3].map(function (x) { const y = x + 1; return x * y;});// good[1, 2, 3].map((x) => { const y = x + 1; return x * y;});

使用模板字符串而不是拼接客串

在復雜的字符串連接上使用模板字符串(用`分隔),特別是在涉及多個字符串文本時,模板字符串可以跨越多行。

// badfunction sayHi(name) { return 'How are you, ' + name + '?';}// badfunction sayHi(name) { return ['How are you, ', name, '?'].join();}// badfunction sayHi(name) { return `How are you, ${ name }?`;}// goodfunction sayHi(name) { return `How are you, ${name}?`;}

不要對長字符串使用 來表示連續

不要在普通或模板字符串文字中使用連續行(也就是說,在字符串文字中以反斜杠結束一行)。盡管ES5允許這樣做,但是如果斜杠后面有任何尾隨空格,那么可能會導致一些棘手的錯誤,而且對讀者來說不太明顯。

有趣的是,谷歌和Airbnb不同意這個規則(這是Airbnb的規范)。

雖然谷歌建議連接更長的字符串(如下所示),Airbnb的風格指南基本上建議什么也不做,并允許長字符串繼續,只要他們需要。

// bad (sorry, this doesn't show up well on mobile)const longString = 'This is a very long string that far exceeds the 80 column limit. It unfortunately contains long stretches of spaces due to how the continued lines are indented.'; // goodconst longString = 'This is a very long string that ' + 'far exceeds the 80 column limit. It does not contain ' + 'long stretches of spaces since the concatenated ' + 'strings are cleaner.';

for…of是for循環的首選類型

使用ES6,該語言現在有三種不同的for循環。所有的循環都可以使用,但是如果可能的話,for-of循環應該是首選的。

如果您問我,這是一個奇怪的問題,但是我認為我應該包含它,因為谷歌聲明了一種首選的for循環類型,這非常有趣。

我總覺得 for...in 循環對于對象更好,而對于for...of 的更適合數組,不同場景可以使用不同方式。

雖然這里的Google規范不一定與這個想法相矛盾,但是了解他們特別喜歡這個循環還是很有趣的。

不要使用eval()

不要使用eval或function(…string)構造函數(代碼加載器除外)。這些特性具有潛在的危險,而且在CSP環境中根本不起作用

MDN 頁面的eval()中,甚至有一個名為“不要使用eval!”

// badlet obj = { a: 20, b: 30 };let propName = getPropName(); // returns "a" or "b"eval( 'var result = obj.' + propName );// goodlet obj = { a: 20, b: 30 };let propName = getPropName(); // returns "a" or "b"let result = obj[ propName ]; // obj[ "a" ] is the same as obj.a

常量應該用全大寫字母命名,用下劃線分隔

常量名稱使用CONSTANT_CASE的格式:所有大寫字母,單詞由下劃線分隔。

如果您絕對確信某個變量不應該更改,那么可以通過將該常量的名稱大寫來表示。這使得在整個代碼中使用該常量時,它的不變性非常明顯。

一個值得注意的例外是,如果常量是函數作用域的。在這種情況下,應該用camelCase來寫。

// badconst number = 5;// goodconst NUMBER = 5;

每次聲明一個變量

每個局部變量聲明只聲明一個變量:聲明如令a = 1, b = 2,不推薦。

// badlet a = 1, b = 2, c = 3;// goodlet a = 1;let b = 2;let c = 3;

使用單引號,而不是雙引號

普通的字符串用單引號(')分隔,而不是雙引號(")。提示:如果字符串包含單引號字符,可以考慮使用模板字符串來避免轉義引號。

// badlet directive = "No identification of self or mission."http:// badlet saying = 'Say it ainu0027t so.';// goodlet directive = 'No identification of self or mission.';// goodlet saying = `Say it ain't so`;

最后一個注意

正如我在開始時所說,這些不是強制要求。谷歌只是眾多科技巨頭之一,這些只是推薦。

也就是說,看看谷歌這樣的公司提出的風格建議是很有趣的,這家公司雇傭了很多才華橫溢的人,他們花了很多時間編寫優秀的代碼。

如果你想要遵循“符合谷歌的源代碼”的指導原則,那么你可以遵循這些規則—但是,當然,許多人不同意這些規則,你可以隨意忽略這些規則中的任何一個或所有規則。

我個人認為在很多情況下Airbnb的規范比谷歌更有吸引力。無論您對這些特定的規則采取何種立場,在編寫任何類型的代碼時,始終牢記風格一致性仍然很重要。

原文:13 Noteworthy Points from Google’s JavaScript Style Guide

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩精品一区二区三区中文精品| 国产日韩视频| 成人黄色片在线观看| 日韩一级大片| 自拍偷拍欧美激情| 欧美日韩国产在线一区| 国产区在线观看成人精品| 99精品在线免费| 久久久综合精品| 99vv1com这只有精品| 精品国产一区二区三区久久久蜜月 | 亚洲精品第1页| 亚洲欧洲综合| 亚洲精品成人精品456| 亚洲第一毛片| 亚洲精品日韩综合观看成人91| 亚洲高清av| 亚洲精品少妇30p| 国产农村妇女精品一区二区| 一区二区三区不卡在线观看| 国内外成人免费视频| 欧美日韩在线电影| 日韩福利视频网| 在线综合亚洲| 亚洲欧洲精品天堂一级| 欧美一区视频| www国产精品av| 高清久久久久久| 欧美一区二区在线免费播放| 蜜臀av一级做a爰片久久| 亚洲综合激情| 亚洲视频在线一区观看| 成人性生交大片免费看视频在线| 欧美日精品一区视频| 日韩成人精品视频| 一本一道综合狠狠老| 亚洲成人一二三| 一区二区精品国产| 亚洲毛片av在线| 一区二区视频欧美| 国产女同性恋一区二区| 成人免费视频一区| 欧美日韩高清在线| 久久99热这里只有精品| 亚洲视频播放| 国产日韩欧美综合一区| 91在线观看免费视频| 精品福利二区三区| 99久久伊人精品| 国产女同互慰高潮91漫画| 99国产精品视频免费观看| 26uuu久久综合| 波多野结衣的一区二区三区| 精品久久久久久亚洲综合网 | 欧美电影一区二区| 久久99精品久久久久久久久久久久 | 久久免费视频一区| av动漫一区二区| 欧美一区二区三区视频在线| 国产一区亚洲一区| 日韩欧美电影在线| 99国产精品国产精品久久| 久久色.com| 欧美日韩国产欧| 亚洲视频一区二区免费在线观看 | 亚洲免费网站| 亚洲自拍偷拍综合| 国产精品夜夜夜| 亚洲国产精品久久久久婷婷884 | 91视频观看免费| 国产色综合一区| 欧美日韩精品不卡| 中文字幕第一页久久| 成人免费电影视频| 欧美精品一区二| 欧美性色综合| 亚洲色图一区二区| 美女精品一区| 激情综合一区二区三区| 欧美人牲a欧美精品| 国产a区久久久| 国产拍揄自揄精品视频麻豆| 91影院在线观看| 国产精品国产三级国产aⅴ原创| 国产精品初高中精品久久| 亚洲黄色小说网站| 一本一道波多野结衣一区二区| 国内外精品视频| 日韩欧美中文字幕制服| 99精品热视频| 亚洲三级视频在线观看| 亚洲综合电影一区二区三区| 久草中文综合在线| 日韩精品中文字幕在线不卡尤物 | 精彩视频一区二区| 欧美www视频| 欧美激情综合| 亚洲成人av一区二区| 欧美久久久一区| 色综合天天综合色综合av | 欧美mv和日韩mv的网站| 99re热视频精品| 玉米视频成人免费看| 欧美日韩久久久一区| 99re6这里只有精品视频在线观看| 亚洲视频网在线直播| 在线区一区二视频| 高清不卡在线观看| 日本一区二区三区在线不卡| 欧美一级专区| 国产91精品免费| 亚洲视频资源在线| 91黄色在线观看| 99久久国产免费看| 亚洲一区二区精品3399| 色欧美日韩亚洲| 国产一区二区三区在线看麻豆| 国产日韩欧美精品一区| 久久激情中文| 成人福利视频网站| 一区二区在线看| 久久欧美肥婆一二区| 成人a区在线观看| 奇米在线7777在线精品| 亚洲猫色日本管| 国产亚洲视频系列| 91精品国产综合久久久久久漫画| 美女国产精品| 亚洲另类视频| 欧美激情麻豆| 成人午夜伦理影院| 美女尤物国产一区| 亚洲国产cao| 国产精品免费丝袜| 欧美本精品男人aⅴ天堂| 欧美日精品一区视频| 美女久久一区| 夜夜精品视频| 在线观看的日韩av| 欧美久久综合| 成+人+亚洲+综合天堂| 狠狠色2019综合网| 亚洲成a人在线观看| 亚洲伦理在线免费看| 欧美激情中文字幕一区二区| 欧美不卡一区二区三区四区| 在线电影国产精品| 精品视频全国免费看| 91黄视频在线观看| 色婷婷久久综合| 免费永久网站黄欧美| 国产三区精品| 在线视频精品一区| 在线免费观看欧美| 黑人一区二区| 欧美日韩另类综合| 欧美精品国产一区二区| 成人午夜视频在线观看| 国产精品123| 国产一区在线视频| 国产一区二区三区视频在线播放| 麻豆91免费看| 美女mm1313爽爽久久久蜜臀| 日韩国产精品久久| 日韩二区三区四区| 视频一区在线视频| 日韩制服丝袜av| 日韩av一区二区三区四区| 亚洲超丰满肉感bbw| 亚洲香蕉伊在人在线观| 亚洲国产精品综合小说图片区| 亚洲最大成人综合| 亚洲精品欧美在线| 亚洲国产精品一区二区久久恐怖片| 亚洲一区二区三区国产| 亚洲一区中文日韩| 亚洲一区中文在线| 五月婷婷色综合| 视频一区视频二区中文| 日韩黄色免费电影| 日本亚洲电影天堂| 久久99国产精品免费网站| 激情欧美一区二区三区在线观看| 激情文学综合丁香| 国产成人亚洲综合a∨猫咪| 国产激情91久久精品导航 | 99国产欧美久久久精品| 欧美ab在线视频| 国产精品成人一区二区网站软件| 伊人久久成人| 亚洲免费播放| 亚洲资源av| 色偷偷成人一区二区三区91| 欧美视频一区二区三区| 欧美一区二区三区在线视频| 日韩精品一区二区三区蜜臀| 久久天堂av综合合色蜜桃网| 国产精品电影一区二区三区| 一区二区在线观看不卡| 亚洲成av人**亚洲成av**|