2017-02-02 1 views
1

확인을 클릭하면 문제가 해결되어 해결되지 않았습니다. 내가 자주 뭔가를 할 것 ES5에서es6가 IF (예 : es5) 내에서 변수를 선언합니다.

... 잠시

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

,의는 범위 지정과 의미 그리고 그 모든 잊어 보자 ...

바벨하지 않습니다 ES6을 시작하거나 Chrome 콘솔을 사용하지 않아도됩니다.

이제 ES6에서 동일한 구문이 있습니까?

+1

크롬 콘솔은이 문제에 전혀 문제가 없습니다 ... – AllTheTime

+0

글쎄, 내가 거짓말을했습니다! 크롬 콘솔은 작동하지만 es5 + es6을 지원하기 때문에 가능합니다. 적어도 그것이 제가 가정합니다. –

+0

ES5/ES6과는 아무런 관련이 없습니다. 그것은 '엄격한 사용'입니다. 바벨은 선언되지 않은 변수를 설정할 수 없도록합니다. 그래서 ... 당신은'a = 1'을 할 수없고,'var a = 1'을해야합니다. – AllTheTime

답변

4

바벨이 시행하는 'use strict'을 사용할 때 유효하게하려면 users을 먼저 선언해야합니다. Babel 또는 '엄격한 사용'을 사용하지 않으면 원래 코드가 정상적으로 작동합니다.

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

'use strict'과 작동합니다.

이 트릭을 계속 사용하려면 변환 된 바벨 코드의 맨 위에서 수동으로 'use strict'을 제거 할 수도 있습니다.

+0

그래서 사용자를 먼저 정의하고 싶지는 않습니다. 그것은 조건에서 정의되어야한다 –

+0

내가 사전 정의 변수를 정의 할 경우 당신의 제안을 시도 않았다 –

+0

@AssafMoldavsky 당신이 원하는 것은 '엄격한 사용'으로 불가능합니다. Babel을 사용한다고 가정하면 변환 된 코드 맨 위에서 '엄격한 사용'을 수동으로 제거 할 수 있으며 원하는 것은 효과가 있습니다. – AllTheTime

관련 문제