Trong hầu hết các trình tuần tự hóa/trình giải mã JSON, phần "khóa" trong từ điển javascript/mảng băm được viết dưới dạng một chuỗi.Tại sao phần "khóa" trong mã băm JS/dict là một chuỗi?
Lợi ích của việc sử dụng chuỗi làm khóa như trái ngược với việc chỉ nhập tên dự định vào?
Ví dụ, nói tôi xác định hai đối tượng k1
và k2
như vậy:
var k1 = { a: 1, b: 2, c: 3 }; // define name normally
var k2 = { "a": 1, "b": 2, "c": 3 }; // define name with a string
Và sau đó tôi chạy cái test sau:
alert(k1 == k2); // false (of course)
alert(k1.a == k2.a); // true
alert(k1["b"] == k2["b"]); // true
alert(uneval(k1)); // returns the k1 object literal notation.
alert(uneval(k2)); // returns the same string as above line.
alert(uneval(k1) == uneval(k2)); // true
Vì vậy, điểm của việc có các phím được là những gì dấu ngoặc kép (một chuỗi) như trong cách k2
được xác định thay vì chỉ cần gõ các tên khóa như trong cách thức k1
được xác định?
Tôi chỉ thấy trên này tại Ajaxian trỏ đến Aaron Boodman's blog entry:
chromium.tabs.createTab({
"url": "http://www.google.com/",
"selected": true,
"tabIndex": 3
});
Kể từ khi ông cũng sử dụng trường hợp lạc đà cho tabIndex, tôi không thấy bất kỳ điểm nào trong việc sử dụng một chuỗi ở tất cả.
Tại sao không:
chromium.tabs.createTab({
url: "http://www.google.com/",
selected: true,
tabIndex: 3
});
Tại sao một ninja JS theo quy ước của biến url
, selected
và tabIndex
thành một chuỗi?
Tôi cho rằng quy ước trong javascript vừa bị rò rỉ vì đã làm việc với nhiều JSON rồi ... – chakrit
Tôi tin rằng khả năng tương thích python đã được đề cập như một lý do để báo giá – cobbal
@chakrit Có. Ngoài ra, như được chỉ ra bởi gizmo, nó thường an toàn hơn để sử dụng dấu ngoặc kép trong JavaScript vì bạn không phải lo lắng về các từ dành riêng.Ví dụ {do: "something"} không phải là JavaScript hợp lệ. –