多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > 怎樣寫出更好的JavaScript程序之undefined篇(上)

怎樣寫出更好的JavaScript程序之undefined篇(上)

來源:程序員人生   發布時間:2013-12-05 20:57:55 閱讀次數:2654次
先聲明一些東西,消除歧義:這篇博文中的JavaScript是指一般意義上的JavaScript,并不只限定“自稱是JavaScript”的運行環境;“全局變量”和“全局對象的屬性”是指同樣的東西,只是因為要配合上下文才用了不同的說法,正文中我就不再另外解釋了;“聲明”指通過“var”語句聲明變量和/或對函數及其簽名的定義;“變量”指通過“var”語句聲明過或者在函數體中試圖訪問的命名參數;“undefined”指名為“undefined”的值(全局或本地變量),而“未定義”指type(...) == “undefined”的情況;“output”是一個顯示傳入參數的函數,可以看作是“alert”的同類。

我們寫JavaScript程序的時候總有需要用到“未定義”的時候,比方說我們要知道某一個值是不是已經經過賦值,或者我們希望消除某一個已經賦予的值,我們就可能這樣做:

output(myVar === undefined);
myVar = undefined;
然而這樣做并不太好,如果我們嘗試“讀”(或者比較)一個不存在的變量,就會引發一個異常。

比方說如果因為設計得不夠周全,執行上面的代碼的時候還沒有定義過myVar這個變量,上面的代碼就會出錯;

另外在較早的瀏覽器版本上,也不存在undefined這個預定義值,所以為了提高兼容性和容錯性,我們可以這樣做:

output(typeof(myVar) == "undefined");
myVar = void(0);
typeof運算符是JavaScript的語言功能,雖然上面的代碼看起來像是這樣的一種東西:

output(oneFunction(myVar) == "undefined");
myVar = void(0);
但這兩者有一個重要區別——當myVar不存在的時候,前者可以正確執行,并返回字符串"undefined";而后者不管內部構造是什么樣的,都會引發異常。

void則是另一個語言功能,這個運算符的意義是向腳本的其它部分隱藏它的傳入參數;而假如有一個語句試圖得到void“運算”的結果,它就只能得到“未定義”。

因為void的這個特性,void最常見的功能就有兩種:一是像上面的代碼中那樣將“未定義”值賦予給其它變量/屬性;另一種就是像下面這樣:

<a href="javascript:void(favList.push(curItem));">添加到收藏列表</a>
其中favList是一個JavaScript數組,而curItem是一個已經定義的對象——數組的push方法會返回執行push操作以后數組的長度,在這個例子里面這個長度對我們來說一點用都沒有,但如果放任它不管的話,瀏覽器就可能會跳轉到一個幾乎為空白的腳本結果頁面,只顯示push的返回值,比方說“3”。

因此需要用一個void運算符來“欺騙”瀏覽器:這里啥都沒有。

現在把目光回到對“未定義”的使用上,就會發現前面我們用來同“未定義”比較的“高容錯性”的typeof運算符,用起來有點麻煩:總共需要多寫“typeof()""”這樣10個字符。

雖然我們是成天跟麻煩打交道的程序員,但這也不能說明我們不該想辦法減少麻煩啊~各種開發工具其實不都是為了把編程工作變得簡單才出現的么?

所以說如果明確知道一個變量一定一定絕對絕對已經聲明過,就可以把這個變量直接和已知的“未定義”相比較,比方說這樣:

output(myVar === void(0));
相比于使用typeof運算符,后面這個辦法除了少打幾個字符,還有一些好處:可以避免難以察覺的拼寫錯誤(比方說把“undefined”寫成“undefinied”什么的) 。

到這里,最常見的關于“undefined”/“未定義”的技巧,已經介紹完了。

在下一篇里面,我會介紹另一些不太常見的技巧。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美黑人巨大videos免费 | 精品久久久久国产免费 | 精品一区二区三区 不卡高清 | 亚洲国产日韩成人综合天堂 | 老司机福利免费 | 国产一区二区在线视频 | 欧美日韩性视频一区二区三区 | 欧美天天 | 中文字幕色站 | 亚洲人成伊人成综合网久久 | 一区自拍 | 手机看片日韩欧美 | 羞羞视频免费看网站 | 国产美女福利视频福利 | 国产女人精品性视频 | 日韩大片免费看 | 国产亚洲欧美日韩综合综合二区 | 一级成人a做片免费 | 91福利片 | 国产美女福利视频福利 | 黄色毛片视频网站 | 欧美国产精品不卡在线观看 | 色吊丝一区二区 | 欧美性小说 | a中文字幕1区 | 国产精品亚洲午夜不卡 | 免费黄网址 | 国产高清在线看免费视频观 | 性欧美精品videofree高清hd | 亚洲伊人久久大香线蕉苏妲己 | 成人国产在线视频在线观看 | 日本人护士免费xxxx视频 | 波多久久夜色精品国产 | 中文字幕日韩一区二区不卡 | 噜噜色.com| 久久精品三级视频 | 国产亚洲精品美女久久久久 | 亚洲在线免费 | 在线欧美不卡 | 波多野结衣亚洲一区二区三区 | 日韩一级片免费在线观看 |