Làm thế nào để kiểm tra nếu một biến tồn tại
Đây là một giải pháp chống đạn khá tốt để kiểm tra nếu một biến tồn tại và đã được khởi tạo:
var setOrNot = typeof variable !== typeof undefined;
Nó thường được sử dụng kết hợp với một toán tử ternary để đặt mặc định trong trường hợp một biến nhất định chưa được khởi tạo:
var dark = typeof darkColor !== typeof undefined ? darkColor : "black";
Các vấn đề với đóng gói
Thật không may, bạn không thể đơn giản gói gọn kiểm tra của bạn trong một chức năng.
Bạn có thể nghĩ làm một cái gì đó như thế này:
function isset(variable) {
return typeof variable !== typeof undefined;
}
Tuy nhiên, điều này sẽ tạo ra một lỗi tham chiếu nếu bạn đang gọi, vd. isset(foo)
và biến foo
chưa được xác định, bởi vì bạn không thể chuyển dọc theo biến không tồn tại cho hàm:
Uncaught ReferenceError: foo không được xác định
Kiểm tra xem các tham số chức năng không được xác định
Mặc dù isset
chức năng của chúng tôi không thể được sử dụng để kiểm tra xem một biến có tồn tại hay không (vì lý do giải thích ở đây), nhưng nó cho phép chúng tôi kiểm tra xem các tham số của hàm có được xác định không:
var a = '5';
var test = function(x, y) {
console.log(isset(x));
console.log(isset(y));
};
test(a);
// OUTPUT :
// ------------
// TRUE
// FALSE
Mặc dù không có giá trị nào y
được truyền cho hàm test
, isset
hàm của chúng ta hoạt động hoàn hảo trong ngữ cảnh này, vì y
được biết đến trong hàm test
là một undefined
giá trị.
Tôi ngạc nhiên tôi không thấy: 'if (!! biến)' ở đây. Bất kỳ lý do tại sao điều này không được khuyến khích?
– Trần Lê Khánh 13:14:51 26/06/2015if (!! biến) '- không được đề xuất nguyên nhân khi biến === 0 -' (!! biến) 'sẽ trả về true
– Tạ Tuấn Khải 18:46:33 12/07/2015@JasoonS Và nó sẽ đưa ra một ngoại lệ nếu biến không được xác định / khởi tạo.
– Dương Tuấn Hải 11:47:15 15/03/2016nếu bạn muốn biết liệu có
– Lê Mai Phương 21:00:52 22/11/2017foo
được khai báotypeof foo === 'undefined'
hay không, hoặctypeof foo === typeof undefined
– Vũ Ðức Hải 13:07:08 07/12/2017if(!!variable)
là chính xác giống nhưif(variable)
.