摘要:編寫(xiě)高質(zhì)量的要點(diǎn)深入理解系列一知識(shí)點(diǎn)最小全局變量全局變量命名易與第三方的腳本引起沖突所以盡可能少的使用全局變量是很重要的相關(guān)策略有命名空間模式或是函數(shù)立即自動(dòng)執(zhí)行,但是要想讓全局變量少最重要的還是始終使用來(lái)聲明變量。
Title: 編寫(xiě)高質(zhì)量Javascript的要點(diǎn)-Review深入理解Javascript系列(一)
date: 2017-6-9 14:14:20
全局變量命名易與第三方的腳本引起沖突,所以盡可能少的使用全局變量是很重要的.相關(guān)策略有:命名空間模式或是函數(shù)立即自動(dòng)執(zhí)行,但是要想讓全局變量少最重要的還是始終使用var來(lái)聲明變量。
幾種不經(jīng)意之間聲明的全局變量示例(反例)//第一種 function sum(x,y){ result = x+y;//隱式聲明了全局變量result return result; } //第二種 function foo(){ //這邊是首先聲明了全局變量b,賦值0,又將b的引用指向a; var a=b=0; }隱式全局變量與明確定義的全局變量的差別
通過(guò)var聲明的全局變量,通過(guò)delete操作符是無(wú)法刪除的
沒(méi)有通過(guò)var聲明的隱式全局變量,可以通過(guò)delete刪除
注:
在技術(shù)上,隱式全局變量并不是真正的全局變量,但它們是全局對(duì)象的屬性。屬性是可以通過(guò)delete操作符刪除的,而變量是不能的
在瀏覽器中,全局對(duì)象可以通過(guò)window的屬性來(lái)訪問(wèn).
在任何層級(jí)的作用域中訪問(wèn)全局對(duì)象:
var global = (function(){ return this; }()); //這個(gè)方法可以隨時(shí)訪問(wèn)全局對(duì)象,因?yàn)槠浔划?dāng)做函數(shù)調(diào)用了,this總是指向全局對(duì)象.聲明變量的小技巧:單var形式
舉個(gè)栗子吧:
function foo(){ var a=1, b=2, c=a+b, obj={}, $dom = document.getElementById("demo"), k,m; //.... }預(yù)解析:var的散布問(wèn)題(Hosting:A Problem with Scattered vars)
對(duì)于JavaScript,只要你的變量是在同一個(gè)作用域中(同一函數(shù)),它都被當(dāng)做是聲明的,即使是它在var聲明前使用的時(shí)候。
栗子:
a = "hehehe"; function foo(){ console.log(a);//undefined var a = "abcd";//a在此被當(dāng)作了局部變量,雖然是在之后聲明的 console.log(a);//abcd } foo();
Javascript代碼執(zhí)行分為兩個(gè)階段:
for循環(huán)的優(yōu)化(For Loops)1.變量,函數(shù)聲明以及正常格式的參數(shù)創(chuàng)建,這是一個(gè)解析和進(jìn)入上下文的階段
2.代碼執(zhí)行,函數(shù)表達(dá)式和不合格的標(biāo)識(shí)符被創(chuàng)建.
HTMLCollections指DOM方法返回的對(duì)象.如:
document.getElementsByName(); document.getElementsByClassName(); document.getElementsByTagName(); document.images; document.links; document.forms; document.forms[0].elements;//頁(yè)面第一個(gè)表單的所有域
HTML集合,在每次訪問(wèn)其長(zhǎng)度時(shí)會(huì)實(shí)時(shí)的查詢DOM,DOM操作相對(duì)來(lái)說(shuō)比較昂貴.
//優(yōu)化的for循環(huán)寫(xiě)法,緩存數(shù)組的長(zhǎng)度. for(var i=0,len=array.length;i還有進(jìn)一步的微操作:
少了一個(gè)變量
向下數(shù)到0,通常更快,因?yàn)楹?做比較要比和數(shù)組長(zhǎng)度或是其他不是0的東西作比較更有效率
var i,myArray=[]; for(i=myArray.length;i--){ } var myarray = [], i = myarray.length; while (i–-) { // 使用myarray[i]做點(diǎn)什么 }for-in循環(huán)(for in loops)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/87065.html
摘要:訪問(wèn)全局對(duì)象在瀏覽器中,全局對(duì)象可以通過(guò)屬性在代碼的任何位置訪問(wèn)除非你做了些比較出格的事情,像是聲明了一個(gè)名為的局部變量。 前言 才華橫溢的Stoyan Stefanov,在他寫(xiě)的由O’Reilly初版的新書(shū)《JavaScript Patterns》(JavaScript模式)中,我想要是為我們的讀者貢獻(xiàn)其摘要,那會(huì)是件很美妙的事情。具體一點(diǎn)就是編寫(xiě)高質(zhì)量JavaScript的一些要素...
某熊的技術(shù)之路指北 ? 當(dāng)我們站在技術(shù)之路的原點(diǎn),未來(lái)可能充滿了迷茫,也存在著很多不同的可能;我們可能成為 Web/(大)前端/終端工程師、服務(wù)端架構(gòu)工程師、測(cè)試/運(yùn)維/安全工程師等質(zhì)量保障、可用性保障相關(guān)的工程師、大數(shù)據(jù)/云計(jì)算/虛擬化工程師、算法工程師、產(chǎn)品經(jīng)理等等某個(gè)或者某幾個(gè)角色。某熊的技術(shù)之路系列文章/書(shū)籍/視頻/代碼即是筆者蹣跚行進(jìn)于這條路上的點(diǎn)滴印記,包含了筆者作為程序員的技術(shù)視野、...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
閱讀 3023·2023-04-26 00:32
閱讀 507·2019-08-30 15:52
閱讀 2114·2019-08-30 15:52
閱讀 3356·2019-08-30 15:44
閱讀 3288·2019-08-30 14:09
閱讀 1423·2019-08-29 15:15
閱讀 3401·2019-08-28 18:12
閱讀 1084·2019-08-26 13:55