亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

javascript中undefined的本質解析

2024-05-06 16:53:53
字體:
來源:轉載
供稿:網友

一、列出7種數據類型(面試可能問)

  • Undefined
  • Null
  • Boolean
  • String
  • Number
  • Symbol
  • Object

二、undefined本質

undefined是window對象的一個屬性,其類型是Undefined。

javascript,undefined,本質解析

下面解釋javascript中屬性的本質,因為undefined是一個屬性,了解undefine的本質要用到屬性的本質。

三、屬性本質

對JavaScript來說,屬性并非只是簡單的名稱和值,JavaScript用一組特征(attribute)來描述屬性(property)。

先來說第一類屬性,數據屬性。它比較接近于其它語言的屬性概念。數據屬性具有四個特征。

  • value:就是屬性的值。
  • writable:決定屬性能否被賦值。
  • enumerable:決定for in能否枚舉該屬性。
  • configurable:決定該屬性能否被刪除或者改變特征值。

補充:第二類屬性是訪問器(getter/setter)屬性,它也有四個特征。 (本文用不到,但可以和第一類屬性放在一起記憶)

  • getter:函數或undefined,在取屬性值時被調用。
  • setter:函數或undefined,在設置屬性值時被調用。
  • enumerable:決定for in能否枚舉該屬性。
  • configurable:決定該屬性能否被刪除或者改變特征值。

我們通常用于定義屬性的代碼會產生數據屬性,其中的writable、enumerable、configurable都默認為true。我們可以使用內置函數 Object.getOwnPropertyDescripter來查看,如以下代碼所示:

const print = console.logconst o = {a: 1}o.b = 2// a和b均為數據屬性const aa = Object.getOwnPropertyDescriptor(o, 'a')// {value: 1, writable: true, enumerable: true, configurable: true}const bb = Object.getOwnPropertyDescriptor(o, 'b')// {value: 2, writable: true, enumerable: true, configurable: true}print('aa', aa)print('bb', bb)

javascript,undefined,本質解析

對window對象的undefined施加此函數:

javascript,undefined,本質解析

由此看出undefined是window的第一類屬性--數據屬性,而且該屬性不能能被賦值(writable=false),不能被for in枚舉(enumerable=false),不能刪除或改變特征值(configurable=false)。這也解釋為什么給undefined重新賦值后其值卻不改變:因為writable=false

javascript,undefined,本質解析

以及解釋為什么不能重新用Object.defineProperty函數定義undefined:因為configurable=false

javascript,undefined,本質解析

注:如果我們要想改變屬性的特征,或者定義訪問器屬性,我們可以使用 Object.defineProperty

javascript,undefined,本質解析

四、Undefined與Null

一個問題,為什么有的編程規范要求用void 0代替undefined?現在我們就分別來看一下。

javascript,undefined,本質解析

Undefined 類型表示未定義,它的類型只有一個值,就是 undefined。任何變量在賦值前是 Undefined 類型、值為 undefined,一般我們可以用全局變量undefined(就是名為undefined的這個變量)來表達這個值,或者 void 運算來把任一一個表達式變成 undefined 值。

但是呢,因為JavaScript的代碼undefined是一個變量,而并非是一個關鍵字,這是JavaScript語言公認的設計失誤之一,所以,為了避免無意中被篡改,建議使用 void 0 來獲取undefined值。

Undefined跟 null 有一定的表意差別,null表示的是:“定義了但是為空”。所以,在實際編程時,我們一般不會把變量賦值為 undefined,這樣可以保證所有值為 undefined 的變量,都是從未賦值的自然狀態 。

Null 類型也只有一個值,就是 null,它的語義表示空值,與 undefined 不同,null 是 JavaScript 關鍵字,所以在任何代碼中,你都可以放心用 null 關鍵字來獲取 null 值。

五、總結

undefined是window對象的一個屬性其類型是Undefined,屬性不是簡單的名值對,它還具有一組特征值(attribute)。通過Object.getOwnPropertyDescriptor函數可以得到這組特征值。通過Object.defineProperty函數可以添加一個自定義特征值的屬性,在已有屬性的特征值configurable為true的前提下也可以通過該函數修改已有屬性的特征值。

補充:undefined在全局環境沒法被賦值,在局部環境是可以被賦值的!

javascript,undefined,本質解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久夜精品香蕉| 欧美激情a在线| 中文字幕亚洲欧美日韩在线不卡| 欧美性20hd另类| 欧美综合一区第一页| 69国产精品成人在线播放| 精品人伦一区二区三区蜜桃网站| 国产精品久久久久久久久久小说| 亚洲国产精品成人av| 日韩精品亚洲元码| 欧洲成人在线观看| 日韩高清av一区二区三区| 欧美激情在线播放| 91中文精品字幕在线视频| yellow中文字幕久久| 久久久人成影片一区二区三区观看| 亚洲欧美日韩精品久久亚洲区| 亚洲a∨日韩av高清在线观看| 欧美日韩在线观看视频小说| 久久综合免费视频| 国产美女久久精品香蕉69| 久久影院资源站| 北条麻妃一区二区在线观看| 91po在线观看91精品国产性色| **欧美日韩vr在线| 欧美极度另类性三渗透| 久久九九国产精品怡红院| 中文字幕日韩在线视频| 久久精品国产69国产精品亚洲| 国产精品一区二区在线| 亚洲综合一区二区不卡| 成人性生交大片免费看小说| 国产日韩欧美综合| 91视频免费在线| 亚洲欧美日韩国产中文| 国产成人精品免高潮在线观看| 色综合视频一区中文字幕| 中文字幕精品www乱入免费视频| 国产在线不卡精品| 国产精品第三页| 欧美黄色免费网站| 中文字幕日韩欧美在线视频| 欧美成人精品在线播放| 日韩欧美999| 欧美老少配视频| 亚洲一区二区精品| 91精品国产91久久久久| 成人精品视频99在线观看免费| 国产欧美精品一区二区| 一本色道久久综合狠狠躁篇怎么玩| 久久中文字幕国产| 精品国产精品三级精品av网址| 国产aⅴ夜夜欢一区二区三区| 成人两性免费视频| 欧美影院久久久| 国产精品美女久久久久久免费| 国产精品久久久久久av下载红粉| 一区二区三区视频观看| 中文字幕无线精品亚洲乱码一区| 8090理伦午夜在线电影| 2024亚洲男人天堂| 亚洲欧美中文日韩在线| 国产一区二区三区在线观看网站| 亚洲三级av在线| 色婷婷av一区二区三区久久| 久久久精品视频在线观看| 国产一区二区三区四区福利| 国产日韩精品综合网站| 国产精品日韩在线| 45www国产精品网站| 日韩成人在线观看| 日韩天堂在线视频| 国产欧美精品xxxx另类| 国内伊人久久久久久网站视频| 亚洲国产精品久久| 69视频在线免费观看| 色无极亚洲影院| 国产精品中文字幕在线观看| 亚洲国产精品免费| 日韩小视频在线观看| 久久午夜a级毛片| 日韩av免费在线观看| 日韩成人激情视频| 成人精品视频99在线观看免费| 欧美性xxxx极品hd满灌| 奇米4444一区二区三区| 久久久成人av| 亚洲国产日韩欧美综合久久| 国产91在线播放九色快色| 55夜色66夜色国产精品视频| 欧美午夜精品久久久久久人妖| 国产精品天天狠天天看| 亚洲精品国产精品国自产在线| 亚洲视频自拍偷拍| 色综合久久中文字幕综合网小说| 欧美大片第1页| 久久久久久一区二区三区| 欧洲精品在线视频| 中文字幕亚洲二区| 欧美成人免费在线视频| 日本午夜人人精品| 日韩欧美aⅴ综合网站发布| 91精品国产高清久久久久久久久| 日本久久久a级免费| 97人人爽人人喊人人模波多| 欧美激情久久久| 亚洲欧美一区二区三区四区| 久久久最新网址| 日韩一区二区福利| 午夜精品一区二区三区在线| 国产女人18毛片水18精品| 久久精品电影一区二区| 欧美电影在线观看网站| 亚洲xxxx视频| 91chinesevideo永久地址| 国产视频综合在线| 在线观看成人黄色| 欧美极品少妇xxxxx| 欧美激情精品久久久久久| 国产精品偷伦视频免费观看国产| 中文字幕亚洲第一| 精品久久中文字幕| 久久最新资源网| 国产亚洲精品综合一区91| 欧美午夜性色大片在线观看| 亚洲国产欧美一区二区三区同亚洲| 欧美另类极品videosbestfree| 亚洲精品久久久久中文字幕二区| 欧美精品久久久久久久久久| 狠狠色狠狠色综合日日小说| 中文字幕av一区二区三区谷原希美| 亚洲wwwav| 亚洲aaaaaa| 亚洲精品国产精品国产自| 国产精品中文久久久久久久| 欧美黑人性猛交| 国产美女搞久久| 国产一区二区三区在线观看视频| 欧美国产精品va在线观看| 国产亚洲精品久久久优势| 人妖精品videosex性欧美| 欧美成人精品不卡视频在线观看| 91高清视频免费| 久久精品国产一区| 欧美日韩精品在线播放| 色综合老司机第九色激情| 一区二区日韩精品| 92福利视频午夜1000合集在线观看| 欧美日韩免费在线观看| 国产精品日韩在线播放| 福利一区福利二区微拍刺激| 国产视频综合在线| 97精品视频在线播放| 欧美限制级电影在线观看| 日韩av片永久免费网站| 久久久国产一区二区| 亚洲淫片在线视频| 亲子乱一区二区三区电影| 九九热精品视频国产| 久久福利视频导航| 在线精品播放av| 亚洲精品国产精品乱码不99按摩| 亚洲成**性毛茸茸| 国产精品老女人视频|