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

資訊專欄INFORMATION COLUMN

由ES規范學JavaScript(一):為什么undefined可以被賦值,而null不可以?

ccj659 / 2033人閱讀

摘要:既然是屬性,當然可以賦值。然而這三個屬性又是不可寫的屬性,即它們的的內部特性為,所以賦值無效。因為嚴格模式下,禁止給對象的只讀屬性賦值。雖然號稱是這種原始類型可以取的唯一值,然而輸出參考文檔

提出問題

如下代碼:

undefined = 123;
null = 123; // 報錯:Uncaught Reference Error

第一條語句可以執行,盡管賦值并沒有成功;第二條語句報錯。這是為什么呢?undefinednull有什么區別?

解決問題

讀過ES規范后,發現原來是這樣的:

undefinedNaNInfinity都是全局對象window的屬性。既然是屬性,當然可以賦值。然而這三個屬性又是不可寫的屬性,即它們的的內部特性[[writable]]false,所以賦值無效。

null是一個字面量(literal),準確地說叫做Null字面量。與truefalse類似。它們都屬于JavaScript的保留字。換句話說它們都是,與數字值123、字符串值"foobar"一樣,當然不能被賦值了。

再多說些

既然undefined只是一個屬性,并不是語言的保留字,那么它是否可以用來作為變量的名字?當然可以,你完全可以自定義一個叫做undefined的變量或者函數,但是注意不要把它放到全局作用域。例如:

function foo() {
     var undefined = 10;
     console.log(undefined);
}
foo(); // 打印10

通過ES5新增的方法Object.getOwnPropertyDescriptor方法,可以證明undefinedwindow對象的只讀屬性:

Object.getOwnPropertyDescriptor(window, "undefined");

/** 輸出:Object {value: undefined, writable: false,
enumerable: false, configurable: false} **/

在嚴格模式下,給undefined賦值會報錯。因為嚴格模式下,禁止給對象的只讀屬性賦值。

null雖然號稱是Null這種原始類型可以取的唯一值,然而:

 typeof null; // 輸出"object"

參考文檔

15.1.1.3 undefined

7.6.1 Reserved Words

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91587.html

相關文章

  • ES規范JavaScript(二):深入理解“連等賦值”問題

    摘要:有這樣一個熱門問題其實這個問題很好理解,關鍵要弄清下面兩個知識點引擎對賦值表達式的處理過程賦值運算的右結合性一賦值表達式形如的表達式稱為賦值表達式。賦值表達式是右結合的。 有這樣一個熱門問題: var a = {n: 1}; var b = a; a.x = a = {n: 2}; alert(a.x); // --> undefined alert(b.x); // --> {n: ...

    JasonZhang 評論0 收藏0
  • 前端習筆記(六)--JavaScript類型有哪些你知道的細節?

    摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...

    Lsnsh 評論0 收藏0
  • 前端習筆記(六)--JavaScript類型有哪些你知道的細節?

    摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...

    joyvw 評論0 收藏0
  • 前端習筆記(六)--JavaScript類型有哪些你知道的細節?

    摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...

    zlyBear 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<