2017-02-02 1 views
1

OK, das hat einen Punkt erreicht, wo ich genervt bin und das nicht lösen konnte.es6 deklarieren Sie eine Variable in einem IF (wie es5)

In ES5 ich häufig wie etwas tun würde ...

if((users = resp.results) && users.length > 0) { 
    // do something with users 
} 

Für einen Moment, lassen Sie uns über die Scoping vergessen und die Implikation und all das ...

Babel nicht Wie diese Syntax startet ES6 nicht mehr und auch nicht die Chrome-Konsole.

Gibt es jetzt eine äquivalente Syntax in ES6?

+1

Chrome-Konsole hat absolut kein Problem mit dieser ... – AllTheTime

+0

Nun tut mir leid, ich habe gelogen! Die Chrome-Konsole funktioniert, aber das ist, weil es es5 + es6 unterstützt. Zumindest ist das meine Annahme. –

+0

Es hat nichts mit ES5/ES6 zu tun. Es ist 'use strict', das Sie von Babel erzwingen müssen, das nicht deklarierte Variablen zu setzen erlaubt. Also ... du kannst 'a = 1' nicht tun, du musst' var a = 1' tun – AllTheTime

Antwort

4

Wenn Sie möchten, dass es gültig ist, wenn Sie 'use strict' verwenden, die Babel erzwingt, müssen Sie zuerst users deklarieren. Wenn Sie nicht Babel verwenden oder 'use strict' verwenden, funktioniert Ihr Originalcode einwandfrei.

var users; 
if((users = resp.results) && users.length > 0) { 
    // do something with users 
} 

wird mit 'use strict' arbeiten.

Sie können auch manuell 'use strict' von der Oberseite Ihres konvertierten Babel-Codes entfernen, wenn Sie diesen Trick weiterhin verwenden möchten.

+0

so der Trick ist, dass ich nicht zuerst Benutzer definieren möchte, die ich möchte es in der if-Bedingung –

+0

zu definieren Ich habe Ihren Vorschlag es funktioniert nur funktioniert, wenn ich die Variable –

+0

@AssafMoldavsky vordefinieren, was Sie mit 'use strict' on unmöglich ist. Angenommen, Sie verwenden Babel, können Sie die Option 'Use strict' am oberen Rand Ihres konvertierten Codes manuell entfernen und das, was Sie wollen, wird funktionieren. – AllTheTime

Verwandte Themen