2017-02-02 5 views
1

ОК, это дошло до того, что я раздражен и не смог решить эту проблему.es6 объявить переменную внутри IF (например, es5)

В ES5 я бы часто делают что-то вроде ...

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

На мгновение, давайте забудем об определении объема и импликации, и все, что ...

Бабель не как этот синтаксис, начиная с ES6 и консоли Chrome.

Есть ли эквивалентный синтаксис теперь в ES6?

+1

Хромированная консоль абсолютно не имеет проблем с этим ... – AllTheTime

+0

Очень жаль, я солгал! хром-консоль работает, но это потому, что он поддерживает es5 + es6. По крайней мере, это мое предположение. –

+0

Это не имеет никакого отношения к ES5/ES6. Это «использование строгого», которое Babel заставляет вас использовать, что не позволяет устанавливать необъявленные переменные. Итак ... вы не можете сделать 'a = 1', вы должны сделать' var a = 1' – AllTheTime

ответ

4

Если вы хотите, чтобы он был действительным при использовании 'use strict', который выполняет Babel, вам необходимо сначала объявить users. Если вы не используете Babel или «используете строгий», ваш исходный код будет работать нормально.

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

будет работать с 'use strict'.

Вы также можете вручную удалить 'use strict' с верхней части конвертированного кода Babel, если хотите продолжить использование этого трюка.

+0

, так что фокус в том, что я не хочу сначала определять пользователей, я бы хотел он должен быть определен в условии if. –

+0

Я попробовал ваше предложение, оно работает только в том случае, если я предопределяю переменную –

+0

@AssafMoldavsky, что вы хотите, с помощью «use strict» on. Предполагая, что вы используете Babel, вы можете вручную удалить «use strict» в верхней части вашего конвертированного кода, и то, что вы хотите, будет работать. – AllTheTime

Смежные вопросы