2014-12-28 2 views
2

Этот код:Почему «пусть» гармония es6 работает только с использованием строгого?

var x = 8, 
    y = 12; 

let (x = 5, y = 10) { 
    return x + y; 
} 

..gives "SyntaxError: Незаконная декларация пусть вне расширенный режим"

Но с "использовать строгий" он отлично работает.

Итак, интересно, почему «пусть» сначала интегрирован с режимом «использовать строгий»? (согласно http://kangax.github.io/compat-table/es6/#nodeharmony)

+1

Что вы используете для пересылки? И/или какая версия узла? – loganfsmyth

+0

Работает для меня в FF (ночной) – kangax

+0

@loganfsmyth node v0.11.14 – ButuzGOL

ответ

6

let не является зарезервированным словом в JavaScript ES3-эпохи. Например, вы могли бы сделать это:

var let = 5; 

который бы объявить переменную под названием let. Спецификация ES5 была перспективной и сделала ключевые слова, которые они ожидали использовать в будущем, зарезервированные в строгих режимах. Поэтому в мире ES6 они могут анализировать let как ключевое слово, но только внутри строгих контейнеров. Вне строгих контейнеров обратная совместимость требует, чтобы let рассматривался как идентификатор, а не ключевое слово.