nếu thuộc tính chúng tôi muốn kiểm tra trong đối tượng cho dù nó tồn tại hay không, ngay cả khi nó không xác định.
chúng tôi sẽ sử dụng một trong những: 'chống đỡ' trong obj (để kiểm tra tính từ chuỗi nguyên mẫu) hoặc obj.hasOwnProperty ('chống đỡ')
chúng ta cần phải sử dụng phương pháp trên để kiểm tra xem thuộc tính có tồn tại hay không khi truy cập thuộc tính chưa được khai báo trong đối tượng cũng sẽ trả về không xác định.
var o={};
o.c=undefined;
o.c===undefined; //is true
o.a===undefined; //is true as well even though c exists while a doesn't
thường không phải là một vấn đề như không ai thực sự kê khai tài sản không xác định nhiều, nhưng khi làm như vậy làm điều đó như thế này.
o.c=''; //when it can be string or
o.c=null; //to clearly indicate that its nothing.
then
o.c === undefined will return false!
note!!!
null == undefined //true while
null === undefined //false that's why use three equals to test
Đối với các biến không được khai báo và không nằm trong đối tượng. Khi được truy cập Trình biên dịch sẽ trả về lỗi (tham chiếu). Nếu nó không có nghĩa là nó được coi là tài sản toàn cầu, đối tượng cửa sổ thuộc tính và không được khai báo, ít nhất là trong tất cả phạm vi gốc, vì vậy nó sẽ không được xác định giống như o.a
ở trên cùng. nó sẽ trở thành window.prop
.
so x; //error
but x=3; //no error assumed to be global object.
just like o.abcd = 3; would...
make(declare) a property abcd in object o valued(assigned) 3 all at once.
Để tránh tính để trở thành một biến toàn cầu, chúng tôi sử dụng var từ khóa bên trong chức năng, như var k;
Một điều này bạn có thể làm gì về đánh bắt này lỗi tham khảo khi ném cho một biến điều đó không' t tồn tại và được cho là một biến.
try {
x
} catch(e){//code to run when x is not declared let alone defined.}
Nguồn
2013-08-10 12:32:22
Bạn có thể chỉ định một số loại mẫu mã hoặc mô tả chi tiết hơn trong câu hỏi của mình không? – nmagerko
Bạn có thể sử dụng toán tử 'in' để kiểm tra các biến được xác định (với giá trị' undefined') trong phạm vi toàn cục, hoặc trên các đối tượng. Nhưng không thể cho các biến cục bộ được tạo bên trong một hàm vì chúng không thể truy cập được theo chương trình. Xem [answer] của tôi (http://stackoverflow.com/a/3390426/165737) từ một chuỗi cũ hơn. Đối với các biến cục bộ được tạo bên trong một hàm bằng cách sử dụng khối 'try..catch' tìm kiếm một' ReferenceError' có vẻ là giải pháp duy nhất cũng được đề xuất trong câu trả lời được liên kết của @ pst. – Anurag
Tại sao bạn đang cố gắng sử dụng các biến mà bạn chưa khai báo? Nếu bạn nhận được một 'ReferenceError', có nghĩa là đã đến lúc sửa một số mã. –