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