Мне интересно, если это ошибка компилятора, или это так, как и должно быть.
При использовании node.js v10.15.3 этот код выдает ошибку:
var x
x = false
(function y() { console.log('foo') }())
Но этот код работает нормально:
var x
x = false;
(function y() { console.log('foo') }())
Это точка с запятой, которая имеет значение.Сообщение об ошибке: «TypeError: false не является функцией», поэтому кажется, что без точки с запятой компилятор анализирует открытое представление после ключевого слова «false» как вызов функции, как если бы я написал «x = false»()».Мне потребовалось много времени, чтобы выяснить, что пошло не так в моем коде (который, конечно, был более сложным, чем приведенный выше пример). Это часть моей жизни, которую я не верну!
Мой вопрос: почему?Я думал, что точки с запятой не нужны в конце строки?Я только что читал спецификацию ECMA о вставке точек с запятой , пытаясь понять это, но это все еще немного мрачно для меня.
Полагаю, мораль этой истории - просто пойтивперед и завершите все строки точкой с запятой.Самое смешное, что, как программист на Си, это было моей привычкой, и я просто пытался догнать время, отбросив все эти ненужные точки с запятой.