2010-10-07 37 views
6

Khi tôi chạy "var variable = true;" trong chrome console tôi nhận được "không xác định" trả về:"biến var" trả về không xác định?

> var variable = true; 
undefined 

Nhưng khi tôi chạy mà không có "var" nó trả về true:

> variable = true; 
true 

Tại sao nó trở về "không xác định" với "var"?

Nguyên nhân gây nhầm lẫn tôi mong đợi nó sẽ trở lại đúng sự thật.

Trả lời

5

Đầu tiên là tuyên bố, trong khi câu thứ hai là biểu thức. Mặc dù không hoàn toàn giống nhau, nó cũng tương tự như quy tắc C: (?)

// A statement that has no value. 
int x = 5; 

// An expression... 
x = 10; 

// ...that can be passed around. 
printf("%d\n", x = 15); 
+0

Có phải mã js hợp lệ để sử dụng "var variable = true;" hoặc tôi nên chạy "var variable; variable = true;"? –

+0

@ajsie - nó hợp lệ và cả hai câu lệnh đều tương đương nhau. – Oded

+0

Có, đó là mã hợp lệ. Bạn có thể xác nhận điều này bằng cách đánh giá 'biến' sau khi thực hiện câu lệnh. –

1

Một gán trả về giá trị của phân công, nhưng với var trở lại này là "tiêu thụ"

2

var x = y; là một tuyên bố mà không trả về giá trị nào. Trong giao diện điều khiển WebKit JS, một câu lệnh trả về không có giá trị nào sẽ hiển thị undefined là kết quả, ví dụ:

> if(1){} 
undefined 
> ; 
undefined 
> if(1){4} // this statement returns values! 
4 

Việc chuyển nhượng là một biểu hiện mà trả về giá trị của LHS. Điều đó có nghĩa là, tuyên bố biểu hiện này có giá trị trả về và điều này sẽ được hiển thị.

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