2017-05-23 41 views
2

假設a對象是a = {b:1,c:2,d:null,e:undefined}我們用解構賦值:爲什麼解構賦值不檢查空值?

var { 
    b : amer , 
    c : karam , 
    d : moji = 3 , 
    e : yasi = [] , 
} = a; 

amer1karam2,它是正確的,但我把默認值de。因此,如果deundefinednull,分配使用默認值,​​是[]因爲eundefinedmoji返回null值,它是如此的不可思議,因爲在解構assingment默認值是用於檢查undefinednull

爲什麼解構賦值不檢查空值?

+0

也許我對這種風格一無所知,但我真的不明白你的代碼片段的語法 - 它的幾個部分。最明顯的是,你真的可以像這樣定義變量'a'嗎?你能指點我一個資源嗎? –

+2

@DouglasTylerGordon它是默認值的標準[對象解構](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring)。 – Bergi

+1

爲什麼它沒有啓用空值默認值?因爲'null' *是一個值,明確地說是「當前未設置或沒有設置」的值。它與*甚至不存在*不同,它是'undefined'所代表的。 – sweaver2112

回答

3

根據對象解構有關的默認值MDN docs

變量可以被分配一個默認的,在從物體拉到值 是未定義的情況。

+1

是的,正確答案,'null'是一個'object'類型,所以它與'undefined'不同。 'undefined'是'undefined'類型。 – AmerllicA