Код: Выделить всё
console.log((() => {})())< /code>
< /div>
< /div>
< /p>
Очевидно, что это правильно? Консоль выводит неопределенную < /code> в приведенном выше примере ... < /p>
// but let's do something crazy
console.log(((undefined) => undefined)("defined"));
console.log((() => {
var undefined = "defined";
return undefined;
})());ОК, чтобы мы могли переоборудовать неопределенные локально (или глобально без Строгий режим) < /p>
Код: Выделить всё
console.log(((undefined) => {
var undefined = "defined_again";
})("defined"));Но результат все еще не определен, поэтому кажется, что это не неявно возвращая неопределенное значение, а вместо этого обрабатывая все выражение как void(expr).
Похоже, это тоже так в TypeScript:
Код: Выделить всё
const result = (() => {})()
// ^?: const result: void
Очевидно, что в конце концов результат не определен, но меня больше интересует фактическое поведение реализации того, что неявно возвращается?
Возвращает ли пустое тело функции действительно что-нибудь?
Подробнее здесь: https://stackoverflow.com/questions/793 ... turn-in-js
Мобильная версия