2011-11-09 14 views

Trả lời

18

Về cơ bản, varkhai báo biến và bạn cũng có thể gán cho nó cùng một lúc.

Nếu không có var, nó sẽ gán cho biến. Việc gán sẽ gán cho một biến hiện có hoặc tạo một biến toàn cục của tên đó rồi gán cho nó.

Ngoài chức năng, điều đó có nghĩa là không có sự khác biệt thực sự (trong chính) nếu biến không tồn tại. Cả hai tạo biến toàn cầu foo trong trường hợp đó.

Trong vòng một hàm, có sự khác biệt lớn. Việc đầu tiên tạo ra một biến địa phương cho chức năng bất kể có hay không nó tồn tại ở nơi khác.

Thứ hai sẽ tạo ra một biến toàn cầu nếu nó không tồn tại hoặc chỉ thay đổi giá trị nếu nó tồn tại.

Để giữ mã như mô-đun càng tốt, bạn nên luôn sử dụng var trừ khi bạn đang đặc biệt muốn thay đổi các biến toàn cầu hiện có. Điều đó có nghĩa là khai báo tất cả các hình cầu bên ngoài các hàm số var và khai báo tất cả các địa phương với var.

+0

Có sự khác biệt bên ngoài một hàm. Bạn có thể làm điều này obj.prop, bạn không thể làm var obj.prop! –

+0

@Chintan, đó có thể là nhiều hơn để làm với thực tế là 'obj.prop' không thể thực sự là một biến mới, thay vì đó là một tài sản của một biến' obj' hiện có. – paxdiablo

1

Trong trường hợp đầu tiên, foo sẽ có sẵn trong cùng phạm vi được xác định, tức là nó sẽ là biến cục bộ. Trong trường hợp thứ hai foo là một biến toàn cầu, nằm trong phạm vi toàn cầu.

5

foo = 1 sẽ đặt foo trong phạm vi cuối cùng trong đó foo được xác định hoặc phạm vi toàn cầu. var foo = 1 sẽ đặt biến trong phạm vi hiện tại (tức là hàm hiện tại).

+0

@pst: Ý bạn là gì? – Ryan

+0

Ngôn ngữ được cập nhật tốt hơn nhiều :) –

+0

@pst: Được rồi, tôi đã bắt đầu nói với bạn rằng: "Tôi đã chỉnh sửa khoảng 3 giây sau khi tôi đăng, xin lỗi :)" nhưng sau đó tôi mặc dù bạn có nghĩa là http://jsfiddle.net/minitech/sEkYt/ – Ryan

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