thể trùng lặp:
Difference between using var and not using var in JavaScript"var" làm gì trong JavaScript? Tại sao nó đôi khi là một phần của một bài tập?
var foo = 1;
foo = 1;
sự khác biệt giữa trên hai dòng là gì?
thể trùng lặp:
Difference between using var and not using var in JavaScript"var" làm gì trong JavaScript? Tại sao nó đôi khi là một phần của một bài tập?
var foo = 1;
foo = 1;
sự khác biệt giữa trên hai dòng là gì?
Về cơ bản, var
khai 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
.
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! –
@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
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.
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).
Bạn đang sử dụng hướng dẫn/sách JavaScript nào? (Đây là một chủ đề khá cơ bản ...) –