2009-06-30 25 views
10

Tôi có mã được gói trong khối try/catch. tôi sử dụng typeof để tìm hiểu xem một biến được định nghĩa:Javascript nếu typeof = 'undefined' trong vùng try/catch

if (typeof (var) == 'string') { 
    //the string is defined 
} 

Tuy nhiên, sử dụng điều này trong một khối try/catch, nhảy đến một phần bắt thay vì làm những gì nó được suppoed làm (làm điều gì đó với chuỗi nếu được xác định).

Làm cách nào để kiểm tra xem một biến được xác định mà không kích hoạt ngoại lệ?

+1

vẻ như bạn có một vấn đề khác với một bạn nghĩ rằng bạn làm - gửi mã hơn – annakata

+0

Cảm ơn eveyone để trả lời! Var của tôi là một mảng item. đây là lý do. Tôi đã xác định mảng (như mảng trống) và bây giờ nó hoạt động. Ngoại lệ đã bị sa thải vì mảng không tồn tại. – Nir

+0

Một điểm: 'typeof' là toán tử, không phải là hàm. Bạn không cần dấu ngoặc đơn xung quanh toán hạng. * [Điều này được di chuyển từ câu trả lời của tôi vì nó không phải là câu trả lời; Tôi tin rằng tôi không có đủ đại diện để đăng nhận xét vào thời điểm đó] * –

Trả lời

14

'var' không phải là tên biến hợp lệ - đó là từ khóa.

Ngoài ra, những gì bạn cần phải chính xác.

+0

Cảm ơn! xin vui lòng xem bình luận của tôi ở trên – Nir

0

Tôi sẽ sử dụng một so sánh trực tiếp mà không cần 'typeof':

var vvv= 2; 
alert(vvv !== undefined); 

Hãy cẩn thận, tuy nhiên, để biết liệu bạn muốn kiểm tra cho truliness (không sai, null, undefined, "" hoặc 0), chống lại null, undefined, false hoặc kết hợp cả hai.

Nếu bạn chỉ muốn thấy rằng giá trị có giá trị, mã tôi đặt ở trên phải làm.

Như một gợi ý, tôi đã tìm thấy cuốn sách này to lớn: JavaScript - the Good Parts

+0

Cảm ơn! xin vui lòng xem bình luận của tôi ở trên – Nir

+6

var vvv = 2; cảnh báo (vvv! == undefined); không hoạt động trong mọi trường hợp. Trước tiên, hãy thử nó mà không có dòng đầu tiên, và bạn nhận được một lỗi ngay lập tức vì vvv đã không được khai báo. Thứ hai, và điều này không quan trọng, "không xác định" ở phía bên tay phải của so sánh là thuộc tính của đối tượng toàn cầu có thể được gán lại và thậm chí không có mặt trong một số trình duyệt (ví dụ: IE 5) . Vì vậy, thử nghiệm tốt nhất cho biến số v được xác định là: if (typeof v! == "undefined") { ... } –

Các vấn đề liên quan