2017-07-25 172 views
0

我需要幫助,將以下語句轉換爲ES5語法。 ES5中將會是什麼?將語句轉換爲ES5

const { a, b, c = 「foo」 } = this.props; 
+0

'VAR一個= this.props.a,B = this.props.b' – Rajesh

+0

@rajesh在ES5常量... –

回答

3

我建議使用明確的檢查,如果財產c存在於給定的對象或不。如果沒有給出,則使用默認值。

var a = this.props.a, 
    b = this.props.b, 
    c = this.props.c === undefined ? 'foo' : this.props.c; 

的以其他方式使用模式

c = this.props.c || 'foo'; 

不給定falsy值爲零一樣工作。

爲什麼您需要使用undefined進行檢查(在loganfsmyth中提到此問題的評論)?

因爲undefined是在ES6中的函數中檢查default parameters的值。

const f = (c = 'foo') => console.log(c); 
 

 
f();   // 'foo' 
 
f(undefined); // 'foo' 
 
f(0)   // 0

+0

不需要在this.props中使用'c'嗎? – CodingIntrigue

+0

@CodingIntrigue,我不明白這個問題。 –

+0

'in'的左側不需要是字符串嗎? 'this.props'中的c會產生一個錯誤,而不是預期的'true' /'false'。 – CodingIntrigue

3
var 
    a=this.props.a, 
    b=this.props.b, 
    c=this.props.c||"foo"; 

對象解構改掉與對象相同的名稱查找屬性,所以

{prop}=obj 

等於:

prop=obj.prop; 

默認參數可以用輕鬆實現或運營商:

prop=obj.prop || default; 

,或者如果你想算falsys爲道具,itll是:

prop=("prop" in obj)?obj["prop"]:default; 
+1

@rajesh我應該怎麼解釋?由於OP知道解構目標是什麼,我認爲它自我解釋 –

+0

但是很好的答案-_- –

+0

@Jonasw你沒有回答OP。你正在爲讀者回答。所以一個解釋是必須的。 – Rajesh

0

我相信這將是:

var a = this.props.a, 
    b = this.props.b, 
    c = this.props.c || "foo" 

至少我希望,否則這將是下雨祈禱

+1

那裏,默默downvoted(像往常一樣),而其他人同時發佈完全相同的答案,並沒有得到downvoted ... meh –

+0

瘋狂的世界...:/ –

0

最簡單的方法是:

var a = this.props.a, 
b = this.props.b, 
c = this.props.c===undefined?"foo":this.props.c 

但更好的方法是隻使用this.props對象,而不是將其存儲在局部變量中。

+0

' c = this.props.c === undefined?「foo」:this.props.c'可以簡單地重寫'c = this.props.c || 「foo」'(沒有downvote) –

+2

這是不正確的!它會將所有的falsy值(比如0和「」)轉換爲默認的「」「」foo「==」foo「'。這種行爲可能沒有打算。 – Bellian