Вопросы о Strict mode

  1. Почему в Strict mode отменили запись числа в восьмеричной системе счисления 052 ? (ну может из-за бесполезности на практике)
  2. Почему не проходит (хотел прислать в песочнице, но там работает)
'use strict';

let = res = function(name) {
  return 'hi, ' + name;
}
('Tester');

alert(res);

? Uncaught SyntaxError: Unexpected strict mode reserved word

На вопрос “почему именно” не могу ответить. Легкое гугление не помогло.
Предположу что авторы хотели убрать неоднозначность формы записи. Когда читаешь код, и не знаешь особенностей синтаксиса, вида “096” невозможно понять что это двоичная запись а не просто 96. А ошибку кидают чтобы код, который мигрируют на strict предупреждал об неоднозначном поведении.

Этот код, вернее ошибка которую бросает js, выполняя его, пример плохости ошибок в js. Когда ошибка в коде в одном месте, а ошибка которую выкидывает интерпретатор, указывает в другое место.

Тут дело в некорректном синтаксисе. В let нельзя записать значение. После let должно идти имя функции.

В mdn написано, что в strict octal система начинается с 0о. Это и логично, ведь hexadecimal начинается с 0х

1 лайк