真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

javascript中undefined的示例分析

這篇文章主要介紹了javascript中undefined的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、成都網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的平頂山網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

一、列出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.log
const 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

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

javascript中undefined的示例分析

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

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

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

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

五、總結

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

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

javascript中undefined的示例分析

感謝你能夠認真閱讀完這篇文章,希望小編分享的“javascript中undefined的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯,關注創(chuàng)新互聯行業(yè)資訊頻道,更多相關知識等著你來學習!


標題名稱:javascript中undefined的示例分析
當前網址:http://weahome.cn/article/ggphds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部