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