Ахаха!Это одна из проблем Javascript (или уловка?)
Как вы могли заметить, вам не всегда нужно вставлять последнюю точку с запятой в конце ваших инструкций.Например,
let x = '3'
- это то же самое, что let x = '3';На самом деле, браузер всегда читает его как вторую строку.Это связано с тем, что ASI (автоматическая вставка точек с запятой) пытается интеллектуально вставить точку с запятой.
Но проблема в том, что мы не видим реального действия ASI, что усложняет его отладку.
Вот как преобразуется первая функция:
function foo1 (){
return {
bar:"hello"
};
}
А вот как преобразуется вторая функция:
function foo2 (){
return ;
{
bar:"hello"
};
}
(Обратите внимание на «;» сразу после return
)
И поэтому идентификация гораздо важнее, чем вы думаете!
Возможно, вы захотите заинтересовать вас ASI: