中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 網(wǎng)頁(yè)制作 > 如何編寫(xiě)高質(zhì)量的Javascript代碼
Script 元素 type 屬性的妙用 回到列表 介紹27款經(jīng)典的CSS框架
 如何編寫(xiě)高質(zhì)量的Javascript代碼

作者:rockux 時(shí)間: 2011-03-04 文檔類型:翻譯 來(lái)自:rockux

第 1 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [1]
第 2 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [2]
第 3 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [3]
第 4 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [4]
第 5 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [5]
第 6 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [6]
第 7 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [7]
第 8 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [8]
第 9 頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [9]

忘記var的影響

使用var聲明的全局變量和沒(méi)有使用var生成的全局變量還有一個(gè)區(qū)別在于刪除:

使用var聲明創(chuàng)建的全局變量不能被刪除

沒(méi)有使用var聲明的全局變量可以被刪除

這說(shuō)明沒(méi)有使用var聲明生成的全局變量不是真正的變量,他們只是全局對(duì)象的屬性。屬性可以通過(guò)delete刪除,但是變量不行:

// define three globals
var global_var = 1;
global_novar = 2; // antipattern
(function () {
   global_fromfunc = 3; // antipattern
}());
 
// attempt to delete
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true
 
// test the deletion
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"

在ES5的嚴(yán)格模式下,給一個(gè)為聲明的變量賦值會(huì)報(bào)錯(cuò)。

讀取全局對(duì)象

在瀏覽器中,你可以通過(guò)window變量來(lái)讀取全局對(duì)象(除非你在函數(shù)內(nèi)部重新定義了window對(duì)象)。但在有的環(huán)境中,可能不叫window,那么你可以使用下面的代碼來(lái)獲取全局對(duì)象:

var global = (function(){
     return this;
})();

這樣可以獲取到全局對(duì)象的原因是在function的內(nèi)部,this指向全局對(duì)象。但是這在ES5的嚴(yán)格模式下會(huì)不起作用,你需要適配一些其他模式。當(dāng)你開(kāi)發(fā)自己的庫(kù)的時(shí)候,你可以把你的代碼封裝在一個(gè)立即函數(shù)中,然后將this作為一個(gè)參數(shù)傳進(jìn)來(lái)。

單個(gè)var模式

在你的代碼的頂部只是用一個(gè)var關(guān)鍵字,會(huì)有以下的好處:

  • 對(duì)于所有需要的變量,在一個(gè)地方就可以全部看到
  • 避免使用一個(gè)未定義的變量
  • 幫助你記憶聲明的變量,減少全局變量
  • 更精簡(jiǎn)的代碼

書(shū)寫(xiě)很簡(jiǎn)單:

function func() {
   var a = 1,
       b = 2,
       sum = a + b,
       myobject = {},
       i,
       j;
   // function body...
}

通過(guò)一個(gè)var和逗號(hào)來(lái)聲明多個(gè)變量。在聲明的時(shí)候給變量賦默認(rèn)值也是不錯(cuò)的做法,可以避免一些邏輯錯(cuò)誤,提高代碼的可讀性。而后你閱讀的代碼的時(shí)候也可以根據(jù)變量的默認(rèn)值來(lái)方便的猜測(cè)變量的用途。

你也可以在聲明變量的時(shí)候做一些實(shí)際的工作,比如sum = a + b;另外,在操作DOM元素的時(shí)候,你也可以把DOM元素的引用保存在一個(gè)變量中:

function updateElement() {
   var el = document.getElementById("result"),
       style = el.style;
   // do something with el and style...
}

濫用了的var

JavaScript允許你在函數(shù)內(nèi)部有多個(gè)var語(yǔ)句,但是卻都表現(xiàn)的如同在函數(shù)的頂部聲明一樣。這個(gè)特性在你使用一個(gè)變量然后在后面又聲明了這個(gè)變量時(shí)會(huì)導(dǎo)致一些奇怪的邏輯問(wèn)題。對(duì)于JavaScript來(lái)說(shuō),只要變量在同一個(gè)作用域,那么就認(rèn)為是聲明了的,就算是在var語(yǔ)句之前使用也一樣?纯催@個(gè)例子:

myname = "global"; // global variable
function func() {
    alert(myname); // "undefined"
    var myname = "local";
    alert(myname); // "local"
}
func();

在這個(gè)例子中,或許你期望第一次會(huì)彈出global,第二次彈出local。因?yàn)榈谝淮蔚臅r(shí)候沒(méi)有還沒(méi)有使用var聲明myname,這是應(yīng)該是全局變量的myname,第二次聲明了,然后alert之后應(yīng)該是local的值。而事實(shí)上不是這樣的,只要你在函數(shù)中出現(xiàn)了var myname,那么js就認(rèn)為你在這個(gè)函數(shù)中聲明了這個(gè)變量,但是在讀取這個(gè)變量的值的時(shí)候,因?yàn)関ar語(yǔ)句還沒(méi)有執(zhí)行,所以是undefined,很奇怪的邏輯吧。上面的代碼相當(dāng)于:

myname = "global"; // global variable
function func() {
   var myname; // same as -> var myname = undefined;
   alert(myname); // "undefined"
   myname = "local";
   alert(myname); // "local"
}
func();

我們來(lái)解釋一下這個(gè)現(xiàn)象,在代碼的解析中,分兩個(gè)步驟,第一步先處理變量函數(shù)的聲明,這一步處理整個(gè)代碼的上下文。第二步就是代碼的運(yùn)行時(shí),創(chuàng)建函數(shù)表達(dá)式以及未定義的變量。實(shí)際上,我們只是假設(shè)了這個(gè)概念,這并不在ECMAScript的規(guī)范中,但是這個(gè)行為常常就是這樣解釋的。

出處:rockux
責(zé)任編輯:bluehearts

上一頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [2] 下一頁(yè) 如何編寫(xiě)高質(zhì)量的Javascript代碼 [4]

◎進(jìn)入論壇網(wǎng)頁(yè)制作WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。

相關(guān)文章 更多相關(guān)鏈接
加載 Javascript 最佳實(shí)踐
GC與JS內(nèi)存泄露
HTML,CSS和JavaScript速查表
JavaScript異步方法隊(duì)列鏈
JavaScript框架比較
作者文章
網(wǎng)站導(dǎo)航設(shè)計(jì)模式指南
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門(mén)搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大福“敬•自然”設(shè)計(jì)大賽開(kāi)啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買(mǎi)真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛(ài)的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開(kāi)發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:3/9頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共9個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說(shuō)明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書(shū)推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫(xiě)給大家看的色彩書(shū)1》
《跟我去香港》
眾妙之門(mén)—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開(kāi)發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開(kāi)發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2