2012-05-12 35 views
16

Nếu tôi có một lời tuyên bố như sau:Khi khai báo một biến trong javascript, là giá trị mặc định null?

var j; 

không j==null cho đến khi tôi thiết lập nó bằng cái gì?

+10

'j == null' sẽ là' true', nhưng không phải vì 'j' là' null'. Thay vào đó là vì 'j' là' undefined', nhưng toán tử '==' thực hiện kiểu ép buộc. '==' xem xét 'null' và' undefined' là bằng nhau. Toán tử '===' là nghiêm ngặt và không thực hiện bất kỳ sự ép buộc nào. –

Trả lời

25

Không, nó có giá trị mặc định của undefined
Nhưng nếu muốn sử dụng điều kiện !j, nó sẽ làm việc với cả các giá trị (ví dụ không xác định hoặc rỗng)

Lưu ý rằng (j==null)true, nhưng (j===null)false ... Javascript có giá trị "falsy" và các quy tắc đôi khi bất ngờ để chuyển đổi các giá trị, cộng với fancy === điều hành để so sánh giá trị và loại cùng một lúc.

+2

Trên thực tế, j == null sẽ đánh giá là true, j === null sẽ là false. (Nhưng có, giá trị mặc định là không xác định là j === undefined sẽ là true). – SoWeLie

+0

như vậy sẽ viết k === null đánh giá là true, vì biến k không tồn tại? tôi cũng giả sử tôi có thể sử dụng ngược lại, và nói "nếu (j)", và điều đó sẽ đánh giá sai, đúng không? – thisissami

+0

@thisissami không, nó sẽ ném một ReferenceError. Điều phức tạp để có được là * undefined * thực sự là một giá trị hợp lệ. Có cả 'null' và' undefined', chúng giống nhau nhưng khác nhau. –

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