摘要:嚴(yán)格模式嚴(yán)格模式可在整個(gè)腳本或獨(dú)個(gè)方法內(nèi)被激活,它對(duì)應(yīng)不同的語(yǔ)境會(huì)做更加嚴(yán)格的錯(cuò)誤檢查,嚴(yán)格模式頁(yè)確保了代碼更加的健壯,運(yùn)行的也更加快速。嚴(yán)格模式會(huì)阻止使用在未來(lái)很可能被引入的預(yù)留關(guān)鍵字。
嚴(yán)格模式
ECMAScript5 嚴(yán)格模式可在整個(gè)腳本或獨(dú)個(gè)方法內(nèi)被激活,它對(duì)應(yīng)不同的 javascript 語(yǔ)境會(huì)做更加嚴(yán)格的錯(cuò)誤檢查,嚴(yán)格模式頁(yè)確保了 javascript 代碼更加的健壯,運(yùn)行的也更加快速。
嚴(yán)格模式會(huì)阻止使用在未來(lái)很可能被引入的預(yù)留關(guān)鍵字。
你應(yīng)該在你的腳本中也用嚴(yán)格模式,最好在獨(dú)立的IIFE 中應(yīng)用它,避免在你的腳本第一行使用它而導(dǎo)致你的左右腳本都啟動(dòng)了嚴(yán)格模式,這有可能會(huì)引發(fā)一些第三方類庫(kù)的問(wèn)題。
變量聲明總是使用var 來(lái)聲明變量,如不指定 var ,變量將被隱式的聲明為全局變量,例如:
var a=b=0;//b會(huì)唄隱式的創(chuàng)建為全局變量,所以,請(qǐng)總是使用 var 來(lái)聲明變量,并且使用單 var 模式(將所有的變量在函數(shù)最前面只使用一個(gè) var 定義)。例如: (function(){ "use strict" var a=0, b=0, c=0, i, j, myObject(); }())
采用嚴(yán)格模式帶來(lái)的好處是,當(dāng)你手誤輸入錯(cuò)誤的變量時(shí),它可以通過(guò)報(bào)錯(cuò)信息來(lái)幫助你定位錯(cuò)誤的出處。
判斷真假js中以下內(nèi)容為假:
false
null
undefined
0
""
NaN
輯操作符||和&&也可以被用來(lái)返回布爾值,如果操作對(duì)象為非布爾值,那每個(gè)表達(dá)式將會(huì)被自左向右的做真假判斷,基于此操作,最終用有一個(gè)表達(dá)式被返回回來(lái),這在變量賦值時(shí),是可以用來(lái)簡(jiǎn)化你的代碼的,例如:
如果 x 不存在且 y 不存在,x=1
if(!x){ if(!y){ x=1; }else{ x=y; } } 等同于: x=x||y||1; 這一小技巧經(jīng)常用來(lái)給方法設(shè)定默認(rèn)的參數(shù), (function (log){ "use strict"; function multiply(a,b){ a=a||1; b=b||1; log("Result"+a*b); } multiply();//Result 1 multiply(10);//Result 10 multiply(3,NaN);//Result 3 multiply(9,5);//Result 45 }(window.console.log));修改內(nèi)鍵對(duì)象的原型鏈
修改內(nèi)建的諸如 Object.prototype 和Array,prototype 是被嚴(yán)厲禁止的,修改其他的內(nèi)建對(duì)象比如 Function.proptype,雖危害沒(méi)那么大,但始終還是會(huì)導(dǎo)致在開發(fā)過(guò)程中難以debug的問(wèn)題,應(yīng)當(dāng)也要避免。
三元條件判斷(if的快捷語(yǔ)法)用三元操作符分配或者返回語(yǔ)句,在比較簡(jiǎn)單的情況下使用,避免在復(fù)雜的情況下使用,沒(méi)人愿意用10行三元操作把自己的腦子繞暈,
if(x===10){ return "valid"; }else{ return "invalid"; } return x===10?"valid":"invalid"JSHint
在js規(guī)范中,有很多規(guī)范都是樣式上的規(guī)范而不是在邏輯上的規(guī)范,比如盡量的使用===而不是==,我們可以使用JSHint 或者JSLint ,Javascript 代碼驗(yàn)證工具,這種工具可以檢查你的代碼并提供相關(guān)的代碼改進(jìn)意見。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/107831.html
摘要:常見模塊化方案是由社區(qū)提出的模塊化方案中的一種,遵循了這套方案。是模塊化規(guī)范中的一種,遵循了這套規(guī)范。中的模塊化能力由兩個(gè)命令構(gòu)成和,命令用于規(guī)定模塊的對(duì)外接口,命令用于輸入其他模塊提供的功能。 為什么需要模塊化 在ES6出現(xiàn)之前,JS語(yǔ)言本身并沒(méi)有提供模塊化能力,這為開發(fā)帶來(lái)了一些問(wèn)題,其中最重要的兩個(gè)問(wèn)題應(yīng)當(dāng)是全局污染和依賴管理混亂。 // file a.js var name =...
摘要:之前的閉包也好,自執(zhí)行函數(shù)也好,都是模塊化的一些嘗試,直到規(guī)范推出之后,模塊化才真正迅猛發(fā)展起來(lái)。因?yàn)橛辛四K化的概念,才有了按需加載的概念。 前言 我們來(lái)玩樂(lè)高積木吧 模塊化Js已經(jīng)成為了老生常談,不過(guò)在JavaScript設(shè)計(jì)之初,由于定位的問(wèn)題并沒(méi)有提供類的功能,開發(fā)者需要模擬出類似的功能,來(lái)隔離、組織復(fù)雜的JavaScript代碼。之前的閉包也好,自執(zhí)行函數(shù)也好,都是模塊化的一...
摘要:之前的閉包也好,自執(zhí)行函數(shù)也好,都是模塊化的一些嘗試,直到規(guī)范推出之后,模塊化才真正迅猛發(fā)展起來(lái)。因?yàn)橛辛四K化的概念,才有了按需加載的概念。 前言 我們來(lái)玩樂(lè)高積木吧 模塊化Js已經(jīng)成為了老生常談,不過(guò)在JavaScript設(shè)計(jì)之初,由于定位的問(wèn)題并沒(méi)有提供類的功能,開發(fā)者需要模擬出類似的功能,來(lái)隔離、組織復(fù)雜的JavaScript代碼。之前的閉包也好,自執(zhí)行函數(shù)也好,都是模塊化的一...
摘要:所有依賴這個(gè)模塊的語(yǔ)句,都定義在一個(gè)回調(diào)函數(shù)中,等到加載完成之后,這個(gè)回調(diào)函數(shù)才會(huì)運(yùn)行。也采用語(yǔ)句加載模塊,但是不同于,它要求兩個(gè)參數(shù)第一個(gè)參數(shù),是一個(gè)數(shù)組,里面的成員就是要加載的模塊第二個(gè)參數(shù),則是加載成功之后的回調(diào)函數(shù)。 本篇文章來(lái)自對(duì)文章《js模塊化編程之徹底弄懂CommonJS和AMD/CMD!》的總結(jié),大部分摘自文章原話,本人只是為了學(xué)習(xí)方便做的筆記,之后有新的體會(huì)會(huì)及時(shí)補(bǔ)充...
摘要:事實(shí)上已經(jīng)出現(xiàn)了模塊規(guī)范,如果使用的模塊規(guī)范是無(wú)需環(huán)境的。因此,需要將規(guī)范和的模塊規(guī)范區(qū)分開來(lái)。三模塊規(guī)范的好處模塊規(guī)范很好地解決變量污染問(wèn)題,每個(gè)模塊具有獨(dú)立空間,互不干擾,命名空間等方案與之相比相形見絀。 寫在前面: 一個(gè)文件就是一個(gè)模塊。 另外本文中的示例代碼需要在node.js環(huán)境中方可正常運(yùn)行,否則將出現(xiàn)錯(cuò)誤。事實(shí)上ES6已經(jīng)出現(xiàn)了模塊規(guī)范,如果使用ES6的模塊規(guī)范是無(wú)...
摘要:從到完美,寫一個(gè)庫(kù)庫(kù)前端組件庫(kù)之前講了很多關(guān)于項(xiàng)目工程化前端架構(gòu)前端構(gòu)建等方面的技術(shù),這次說(shuō)說(shuō)怎么寫一個(gè)完美的第三方庫(kù)。使用導(dǎo)出模塊,就可以在使用這個(gè)庫(kù)的項(xiàng)目中構(gòu)建時(shí)使用功能。 從 1 到完美,寫一個(gè) js 庫(kù)、node 庫(kù)、前端組件庫(kù) 之前講了很多關(guān)于項(xiàng)目工程化、前端架構(gòu)、前端構(gòu)建等方面的技術(shù),這次說(shuō)說(shuō)怎么寫一個(gè)完美的第三方庫(kù)。 1. 選擇合適的規(guī)范來(lái)寫代碼 js 模塊化的發(fā)展大致有...
閱讀 4428·2021-09-09 09:33
閱讀 2386·2019-08-29 17:15
閱讀 2374·2019-08-29 16:21
閱讀 981·2019-08-29 15:06
閱讀 2620·2019-08-29 13:25
閱讀 582·2019-08-29 11:32
閱讀 3256·2019-08-26 11:55
閱讀 2594·2019-08-23 18:24