Giải pháp
Đơn giản chỉ cần đặt dấu chấm phẩy ( ;) sau console.log(… ).
Giải trình
Lỗi có thể dễ dàng lặp lại như thế này:
console.log()
(function(){})
Nó đang cố gắng truyền function(){}dưới dạng một đối số cho giá trị trả về console.log()mà bản thân nó không phải là một hàm mà thực sự là undefined(kiểm tra typeof console.log();). Điều này là do JavaScript diễn giải điều này là console.log()(function(){}). console.logtuy nhiên là một chức năng.
Nếu bạn không có consoleđối tượng bạn sẽ thấy
ReferenceError: console không được xác định
Nếu bạn có consoleđối tượng nhưng không có logphương thức bạn thấy
TypeError: console.log không phải là một hàm
Tuy nhiên, những gì bạn có là
TypeError: console.log (...) không phải là một hàm
Lưu ý (...)sau tên hàm. Với những cái đó, nó đề cập đến giá trị trả về của hàm.
Dấu ngắt dòng không phân tách hai biểu thức này thành các câu lệnh riêng biệt vì các quy tắc của JavaScript để chèn dấu chấm phẩy tự động (ASI) .
Tôn trọng ;
Tất cả các đoạn mã này dẫn đến tất cả các loại lỗi không mong muốn nếu không có dấu chấm phẩy:
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
Một vi dụ khac
(...)Đôi khi bạn thấy việc sử dụng các phương thức chuỗi hoặc trình truy cập thuộc tính chuỗi:
string.match(/someRegEx/)[0]
Nếu không tìm thấy RegEx đó, phương thức sẽ trả về nullvà trình truy cập thuộc tính trên nullsẽ gây ra a TypeError: string.match(...) is null - giá trị trả về là null. Trong trường hợp của console.log(...)các giá trị trả về là undefined.