摘要:既然是屬性,當然可以賦值。然而這三個屬性又是不可寫的屬性,即它們的的內部特性為,所以賦值無效。因為嚴格模式下,禁止給對象的只讀屬性賦值。雖然號稱是這種原始類型可以取的唯一值,然而輸出參考文檔
提出問題
如下代碼:
undefined = 123; null = 123; // 報錯:Uncaught Reference Error
第一條語句可以執行,盡管賦值并沒有成功;第二條語句報錯。這是為什么呢?undefined和null有什么區別?
解決問題讀過ES規范后,發現原來是這樣的:
undefined、NaN和Infinity都是全局對象window的屬性。既然是屬性,當然可以賦值。然而這三個屬性又是不可寫的屬性,即它們的的內部特性[[writable]]為false,所以賦值無效。
null是一個字面量(literal),準確地說叫做Null字面量。與true和false類似。它們都屬于JavaScript的保留字。換句話說它們都是值,與數字值123、字符串值"foobar"一樣,當然不能被賦值了。
再多說些
既然undefined只是一個屬性,并不是語言的保留字,那么它是否可以用來作為變量的名字?當然可以,你完全可以自定義一個叫做undefined的變量或者函數,但是注意不要把它放到全局作用域。例如:
function foo() { var undefined = 10; console.log(undefined); } foo(); // 打印10
通過ES5新增的方法Object.getOwnPropertyDescriptor方法,可以證明undefined是window對象的只讀屬性:
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
摘要:有這樣一個熱門問題其實這個問題很好理解,關鍵要弄清下面兩個知識點引擎對賦值表達式的處理過程賦值運算的右結合性一賦值表達式形如的表達式稱為賦值表達式。賦值表達式是右結合的。 有這樣一個熱門問題: var a = {n: 1}; var b = a; a.x = a = {n: 2}; alert(a.x); // --> undefined alert(b.x); // --> {n: ...
摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
摘要:的碼點被稱為基本字符區域。關于的介紹,我準備用文檔阮一峰來做一些介紹,具體的可以參考文檔引入的原因的對象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數前不能使用命令,否則會報錯。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完...
閱讀 1644·2021-11-24 09:39
閱讀 3083·2021-11-22 15:24
閱讀 3091·2021-10-26 09:51
閱讀 3277·2021-10-19 11:46
閱讀 2891·2019-08-30 15:44
閱讀 2217·2019-08-29 15:30
閱讀 2537·2019-08-29 15:05
閱讀 773·2019-08-29 10:55