Пожалуйста, найдите код на изображении ниже. 1. Присвойте возвращаемое значение функции, которая на самом деле выдает ошибку, переменной withLet, объявленной с помощью ключевого слова let. 2. вызов 'withLet', произошла ошибка: 'withLet не определен'. 3. попробуйте утвердить 'withLet' с помощью 'let', ошибка показывает, что 'withLet' уже объявлен.
Но парадокс не существует для «var» (пожалуйста, найдите на следующем изображении).
Мне любопытно, что вызвало различное поведение между этими двумя ситуациями. Довольно запутанно, что «не определено» и «уже объявлено» описывают одну и ту же переменную.
let withLet = (function() {throw 'error!'})()
var withVar = (function() {throw 'error!'})()
//VM2470:1 Uncaught error!
//(anonymous) @ VM2470:1
//(anonymous) @ VM2470:1
withLet
//VM2484:1 Uncaught ReferenceError: withLet is not defined at
//<anonymous>:1:1
//(anonymous) @ VM2484:1
withVar
//undefined
let withLet = 'sth'
//VM2520:1 Uncaught SyntaxError: Identifier 'withLet' has already been
//declared
//at <anonymous>:1:1
//(anonymous) @ VM2520:1
withVar = 'sth'
//"sth"
Скриншот:
undefined
. - person Chris G   schedule 17.01.2019errors!
для каждого вызова функции - person Cid   schedule 17.01.2019withLet
должен быть инициализирован, аundefined
, но из-за характера области видимости переменной он, вероятно, обрабатывает его по-разному. - person venimus   schedule 17.01.2019