国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

細(xì)說(shuō) Javascript 拾遺篇(二) : undefined 和 null

My_Oh_My / 2299人閱讀

摘要:有兩個(gè)可以表示空的值,分別是和,比較有作用的是前者。訪問(wèn)聲明但未初始化的變量。有返回值時(shí)函數(shù)的表達(dá)式?jīng)]有顯式的返回任何內(nèi)容。然而,為了比較其他變量和值,我們需要提前取得的值。因此,從標(biāo)準(zhǔn)實(shí)行后,全局變量已經(jīng)是不再可寫。

Javascript 有兩個(gè)可以表示空的值,分別是 undefinednull,比較有作用的是前者。

undefined

undefined 是一種值為 undefined 的變量類型。
Javascript 還定義了一個(gè)全局變量 undefined,它的值就是 undefined,然而這個(gè)變量既不是常量也不是 Javascript 的關(guān)鍵字。這就意味著這個(gè)變量的值可以被重新賦值。

下面總結(jié)下會(huì)返回 undefined 值的情況:

1.訪問(wèn)未曾修改的全局變量 undefined

2.訪問(wèn)聲明但未初始化的變量。

3.沒(méi)有定義 return 表達(dá)式的函數(shù)。

有返回值時(shí):

4.函數(shù)的 return 表達(dá)式?jīng)]有顯式的返回任何內(nèi)容。

5.訪問(wèn)不存在的屬性。

6.函數(shù)參數(shù)沒(méi)有被顯式傳遞值。

7.賦值為 undefined 值的變量。

8.void(expression) 形式的表達(dá)式。

處理 undefined 值的變化

由于全局變量 undefined 只是保存了一份值為 undefined 的拷貝,因此修改該變量的值并不會(huì)改變 undefined 類型的值。
然而,為了比較其他變量和 undefined 值,我們需要提前取得 undefined 的值。
為了避免代碼中可能對(duì) undefined 變量進(jìn)行重新賦值,常用的方法是使用一個(gè)額外的參數(shù)傳遞到匿名的立即執(zhí)行函數(shù)中。

var undefined = 123;
(function(something, foo, undefined) {
    // undefined in the local scope does 
    // now again refer to the value `undefined`

})("Hello World", 42);

另外一種方法是在函數(shù)內(nèi)部重新聲明變量 undefined:

var undefined = 123;
(function(something, foo) {
    var undefined;
    ...

})("Hello World", 42);
null

盡管在 Javascriptundefined 類型變量的使用類似于 null,但是實(shí)際上是完全不同的另一種類型的變量。
nullJavascript 中有一些使用場(chǎng)景(例如聲明原型鏈的結(jié)束 Foo.prototype = null),但是在絕大部分情況下,null 都可以被 undefined 所代替。

總結(jié)

盡管 undefined 不是關(guān)鍵字,可被賦值,但是根據(jù)現(xiàn)在的規(guī)范好像是并不可重寫:

這個(gè)問(wèn)題明日再研究下。

今天提問(wèn)后解決了這個(gè)問(wèn)題,原因在于 ECMAScript 5 標(biāo)準(zhǔn)里加入了變量擁有可寫、可枚舉、可配置屬性。
而全局的 undefined 的可寫屬性是 false。測(cè)試如下:

Object.getOwnPropertyDescriptor(window, "undefined");

結(jié)果為:

Object {value: undefined, writable: false, enumerable: false, configurable: false}

所以當(dāng)時(shí)作者寫下這句話時(shí)應(yīng)該是在 EMCAScript 5 標(biāo)準(zhǔn)制定之前。因此,從 EMCAScript 5 標(biāo)準(zhǔn)實(shí)行后,全局變量 undefined 已經(jīng)是不再可寫。

  

提問(wèn)鏈接:《全局變量 undefined 可以被重寫應(yīng)該怎么理解》

參考

http://bonsaiden.github.io/JavaScript-Garden/#core.undefined

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/78095.html

相關(guān)文章

  • 細(xì)說(shuō) Javascript 遺篇(三) : 自動(dòng)插入分號(hào)

    摘要:此時(shí)會(huì)自動(dòng)插入分號(hào),解析器將再次嘗試。工作原理下面的代碼沒(méi)有分號(hào),因此解析器將會(huì)自己判斷在哪些地方插入分號(hào)。前置小括號(hào)在有前置小括號(hào)的情形時(shí),解析器將不會(huì)自動(dòng)插入分號(hào)。這不僅將保證代碼整體的一致性,也將有效地避免解析器對(duì)代碼行為的錯(cuò)誤改變。 盡管 Javascript 有類似 C 的句法風(fēng)格,但是它并不強(qiáng)制在代碼中使用分號(hào),所以分號(hào)可能被省略。Javascript 并不是一個(gè)缺少分號(hào)的...

    mushang 評(píng)論0 收藏0
  • 細(xì)說(shuō) Javascript 遺篇(四) : setTimeout setInterval

    摘要:當(dāng)間隔時(shí)間設(shè)置較小時(shí),將會(huì)導(dǎo)致回調(diào)函數(shù)堆積。處理可能阻塞的代碼最簡(jiǎn)單且最可控的方式就是在回調(diào)函數(shù)內(nèi)部使用函數(shù)。但是很明顯,由于指定最大值的限制,還會(huì)有定時(shí)器沒(méi)有被清除掉。另外,盡量避免使用函數(shù),從而避免可能導(dǎo)致的回調(diào)函數(shù)堆積現(xiàn)象。 由于 Javascript 是異步的,因此我們可以通過(guò) setTimeout 和 setInterval 函數(shù)來(lái)指定特定時(shí)間執(zhí)行代碼。 function ...

    wangjuntytl 評(píng)論0 收藏0
  • 細(xì)說(shuō) Javascript 遺篇(一) : 遠(yuǎn)離 eval 函數(shù)

    摘要:然而,函數(shù)只有在當(dāng)前作用域中直接被調(diào)用并且被調(diào)用的函數(shù)名為才會(huì)被執(zhí)行。在全局作用域下,這個(gè)字符串會(huì)一直被執(zhí)行,在這個(gè)情形下我們并沒(méi)有直接調(diào)用函數(shù),也可以執(zhí)行字符串。總結(jié)函數(shù)應(yīng)該盡可能地避免使用。 Javascript 的 eval 函數(shù)可以在當(dāng)前作用域執(zhí)行一段包含 Javascript 代碼的字符串。 var foo = 1; function test() { var fo...

    imtianx 評(píng)論0 收藏0
  • 細(xì)說(shuō) Javascript 類型篇() : typeof 操作符

    摘要:操作符還有可能是設(shè)計(jì)中最大缺陷,因?yàn)樗鼛缀跏峭耆茡p的。由于用法與調(diào)用函數(shù)的語(yǔ)法相似,因此常被誤以為是函數(shù)調(diào)用,實(shí)際上并不存在名為的函數(shù),只是一個(gè)操作符而已。而列則表示對(duì)象內(nèi)部的屬性。屬性文檔中明確地給出了獲得屬性的途徑,就是使用。 typeof 操作符(還有 instanceof)可能是 Javascript 設(shè)計(jì)中最大缺陷,因?yàn)樗鼛缀跏峭耆茡p的。由于 typeof 用法與調(diào)用函數(shù)...

    PAMPANG 評(píng)論0 收藏0
  • 細(xì)說(shuō) Javascript 對(duì)象篇() : 原型對(duì)象

    摘要:并沒(méi)有類繼承模型,而是使用原型對(duì)象進(jìn)行原型式繼承。我們舉例說(shuō)明原型鏈查找機(jī)制當(dāng)訪問(wèn)一個(gè)對(duì)象的屬性時(shí),會(huì)從對(duì)象本身開(kāi)始往上遍歷整個(gè)原型鏈,直到找到對(duì)應(yīng)屬性為止。原始類型有以下五種型。此外,試圖查找一個(gè)不存在屬性時(shí)將會(huì)遍歷整個(gè)原型鏈。 Javascript 并沒(méi)有類繼承模型,而是使用原型對(duì)象 prototype 進(jìn)行原型式繼承。 盡管人們經(jīng)常將此看做是 Javascript 的一個(gè)缺點(diǎn),然...

    lansheng228 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<