Đối tượng ReferenceError
biểu thị lỗi khi một biến không tồn tại [hoặc chưa được khởi tạo] trong phạm vi hiện tại được tham chiếu.ReferenceError
object represents an error when a variable that doesn't exist [or hasn't yet been initialized] in the current scope is referenced.ReferenceError
là một đối tượng có thể nối tiếp, vì vậy nó có thể được nhân bản với structuredClone[]
hoặc được sao chép giữa các công nhân bằng
0.try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
Người xây dựng
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
1Tạo một đối tượng ReferenceError
mới.
Thuộc tính thể hiện
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
3Thông báo lỗi. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
5Tên lỗi. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
7Lỗi nguyên nhân. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
9 không chuẩnNon-standardĐường dẫn đến tệp đã nêu ra lỗi này. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.ReferenceError: "x" is not defined [V8-based & Firefox] ReferenceError: Can't find variable: x [Safari]1 không chuẩnNon-standard
Số dòng trong tập tin nêu ra lỗi này. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.ReferenceError: "x" is not defined [V8-based & Firefox] ReferenceError: Can't find variable: x [Safari]3 không chuẩnNon-standard
Số cột theo dòng đã nêu ra lỗi này. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.ReferenceError: "x" is not defined [V8-based & Firefox] ReferenceError: Can't find variable: x [Safari]5 không chuẩnNon-standard
Dấu vết xếp chồng. Kế thừa từ
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
4.Ví dụ
Bắt một tham chiếu HERROR
try {
let a = undefinedVariable
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "undefinedVariable is not defined"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "Scratchpad/1"
console.log[e.lineNumber] // 2
console.log[e.columnNumber] // 6
console.log[e.stack] // "@Scratchpad/2:2:7\n"
}
Tạo một tham chiếu HERROR
try {
throw new ReferenceError['Hello', 'someFile.js', 10]
} catch [e] {
console.log[e instanceof ReferenceError] // true
console.log[e.message] // "Hello"
console.log[e.name] // "ReferenceError"
console.log[e.fileName] // "someFile.js"
console.log[e.lineNumber] // 10
console.log[e.columnNumber] // 0
console.log[e.stack] // "@Scratchpad/2:2:9\n"
}
Thông số kỹ thuật
Thông số kỹ thuật ngôn ngữ Ecmascript # Sec-Bản địa-Xây dựng-Types-được sử dụng trong This-Stor-Reform # sec-native-error-types-used-in-this-standard-referenceerror |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt
Xem thêm
Ngoại lệ JavaScript "biến không được xác định" xảy ra khi có biến không tồn tại được tham chiếu ở đâu đó.Thông điệp
ReferenceError: "x" is not defined [V8-based & Firefox]
ReferenceError: Can't find variable: x [Safari]
Loại lỗi
Có chuyện gì?
Có một biến không tồn tại được tham chiếu ở đâu đó. Biến này cần được khai báo, hoặc bạn cần đảm bảo rằng nó có sẵn trong tập lệnh hoặc phạm vi hiện tại của bạn.
Lưu ý: Khi tải thư viện [chẳng hạn như jQuery], hãy đảm bảo nó được tải trước khi bạn truy cập các biến thư viện, chẳng hạn như "$". Đặt phần tử ReferenceError: "x" is not defined [V8-based & Firefox]
ReferenceError: Can't find variable: x [Safari]
7 tải thư viện trước mã của bạn sử dụng nó. When loading a library [such as jQuery], make sure it is loaded before you access library variables, such as "$". Put the
ReferenceError: "x" is not defined [V8-based & Firefox] ReferenceError: Can't find variable: x [Safari]7 element that loads the library before your code that uses it.
Ví dụ
Biến không được khai báo
foo.substring[1]; // ReferenceError: foo is not defined
Biến "FOO" không được xác định ở bất cứ đâu. Nó cần phải là một số chuỗi, để phương pháp
ReferenceError: "x" is not defined [V8-based & Firefox] ReferenceError: Can't find variable: x [Safari]8 sẽ hoạt động.
const foo = 'bar';
foo.substring[1]; // "ar"
Phạm vi sai
Một biến cần phải có sẵn trong bối cảnh thực thi hiện tại. Các biến được xác định bên trong một hàm không thể được truy cập từ bất cứ nơi nào bên ngoài hàm, bởi vì biến chỉ được xác định trong phạm vi của hàm
function numbers[] {
const num1 = 2;
const num2 = 3;
return num1 + num2;
}
console.log[num1]; // ReferenceError num1 is not defined.
Tuy nhiên, một hàm có thể truy cập tất cả các biến và hàm được xác định bên trong phạm vi mà nó được xác định. Nói cách khác, một hàm được xác định trong phạm vi toàn cầu có thể truy cập tất cả các biến được xác định trong phạm vi toàn cầu.
const num1 = 2;
const num2 = 3;
function numbers[] {
return num1 + num2;
}
console.log[numbers[]]; // 5