Рішення
Просто поставте крапку з комою ( ;) після console.log(… ).
Пояснення
Помилка легко відтворюється наступним чином:
console.log()
(function(){})
Він намагається передати в function(){}якості аргументу значення, що повертається з console.log()яких самі по собі не є функція , але на самому справі undefined(перевірка typeof console.log();). Це тому, що JavaScript інтерпретує це як console.log()(function(){}). console.logоднак є функцією.
Якби у вас не було consoleоб’єкта, який би ви побачили
ReferenceError: консоль не визначена
Якби у вас був consoleоб’єкт, але не той logметод, який ви б бачили
Помилка типу: console.log не є функцією
Однак те, що у вас є
Помилка типу: console.log (...) не є функцією
Зверніть увагу на назву (...)після функції. У тих, що стосуються поверненого значення функції.
Розрив рядка не відокремлює ці два вирази як окремі оператори через правила JavaScript для автоматичної вставки крапки з комою (ASI) .
Поважайте ;
Усі ці фрагменти коду призводять до різного роду несподіваних помилок, якщо крапка з комою відсутня:
console.log() // As covered before
() // TypeError: console.log(...) is not a function
console.log() // Accessing property 0 of property 1 of the return value…
[1][0] // TypeError: console.log(...) is undefined
console.log() // Like undefined-3
-3 // NaN
let a, b;
const array = Array.from({ length: 2 })
// Now, let’s use destructuring:
[a, b] = array; // ReferenceError: can't access lexical declaration 'array' before initialization
let a, b;
const array = Array.from({ length: 2 }).fill(1),
array2 = Array.from({ length: 2 })
// Now, let’s use destructuring. Attempt to get the two 1’s from `array` as `a` and `b`:
[a, b] = array;
console.log(a, b); // undefined undefined
Ще один приклад
(...)Часто ви бачите використання ланцюгових методів або ланцюгових засобів доступу до властивостей:
string.match(/someRegEx/)[0]
Якщо RegEx не знайдений, цей метод буде повертати nullі властивість збруя на nullзаподіє TypeError: string.match(...) is null - повертається значення є null. У разі console.log(...)з повертається значенням було undefined.