Javascript: «Устарел»

#javascript

Вопрос:

Скриншот сообщения

Я новичок в изучении Javascript, и, следуя учебнику, я обнаружил, что console.log(имя); получил (имя) таким образом, утверждая, что он «Устарел».

Если есть объяснение того, что это значит или что я должен сделать, чтобы удалить этот удар, я был бы очень благодарен.

Комментарии:

1. В среде браузера глобальная переменная name ссылается на window.name . Вряд ли вы этого хотели. Вместо этого определите переменную в локальной области, прежде чем ссылаться на нее. В глобальном масштабе избегайте name .

2. @тринкот Есть var name = ''; до console.log() этого .

3. «Устаревший» означает, что он все еще работает, но больше не поддерживается и может сломаться в будущих версиях.

Ответ №1:

Поскольку вы использовали var name = ... , TypeScript думает , что вы имеете в виду window.name , что TypeScript считает устаревшим. Вы можете исправить эту ошибку,:

  1. Используйте другой идентификатор переменной, например anotherName
 var anotherName = 'Bob'

console.log(anotherName) 
  1. Переместите код внутри функции. —
 (() => {
  var name = 'bob'

  console.log(name)
})() 

Ответ №2:

Я думаю, что это связано с тем фактом , что «свободная» переменная в браузере, объявленная var вне функции, просто будет указывать на:

 window.name 
 

И window.name имеет особое значение, и действительно устарел.

Это причуда языка. Если вы не собирались создавать переменную в глобальной области, вам, возможно, было бы лучше просто объявить ее в функции.

У этого не будет такой же проблемы:

 function main() {
   const name = 'Foo';
}
main();
 

Как правило, рекомендуется избегать создания каких-либо глобальных символов, если вы явно не намерены этого делать.