Điều đó dường như không chính xác - Keysare đối tượng luôn luôn có thể là chuỗi hoặc (kể từ ECMAScript 2015, còn gọi là các ký hiệu ECMA -262 ED 6). Nhưng đó là một chủ đề khác để truy cập thuộc tính khung vuông. Xem ECMA-262 ED 3 § 11.2.1 (Vui lòng xem ECMAScript 2017 (Dự thảo).):
Faillexpression [Biểu thức] Ký hiệu chấm được giải thích bằng chuyển đổi cú pháp sau:
giống hệt nhau trong hành vi của nó với Memberexpression [] và tương tự
Faillexpression [] trong đó một chuỗi theo nghĩa đen chứa cùng một chuỗi các ký tự sau khi xử lý các chuỗi thoát Unicode như định danh.
Vì vậy, khi sử dụng ký hiệu DOT, bit sau dấu chấm phải phù hợp với các tiêu chí cho định danh. Nhưng khi sử dụng dấu ngoặc vuông, một biểu thức được cung cấp được đánh giá và giải quyết thành một chuỗi. Tóm lại, ký hiệu khung vuông được cung cấp để các thuộc tính có thể được truy cập bằng cách sử dụng biểu thức, ví dụ:Ở trên, 0, nên nó được thêm vào. Thuộc tính 1 của 0 sau đó được gán giá trị 'giá trị foo'. Đối với những người đã làm việc với JavaScript trong một thời gian, bạn sẽ hiểu có những hành vi nhất định về ngôn ngữ khiến nó có vẻ như nó hoạt động theo một cách nhất định, trong thực tế, nó không, chẳng hạn như sử dụng == và == Để kiểm tra sự bình đẳng giữa hai giá trị khác nhau. Đối với những gì nhiều người nghĩ, các khóa đối tượng JavaScript không thể là các giá trị loại, boolean, null hoặc không xác định. Các phím đối tượng chỉ có thể là chuỗi và mặc dù nhà phát triển có thể sử dụng các loại dữ liệu khác để đặt khóa đối tượng, JavaScript tự động chuyển đổi các phím thành một chuỗi giá trị.JavaScript object keys cannot be Number, Boolean, Null, or Undefined type values. Object keys can only be strings, and even though a developer can use other data types to set an object key, JavaScript automatically converts keys to a string a value. Là các kỹ sư, nhà phát triển, lập trình viên hoặc người đam mê giỏi, bạn nên cố gắng không tin tưởng này, mà thay vào đó, hãy kiểm tra ngôn ngữ. Đó là lý do tại sao tôi xác nhận quan điểm của mình bằng cách chạy một loạt các thử nghiệm nhanh với JavaScript
Phím đối tượng thử nghiệm trong JavaScriptTruy cập các giá trị bằng cách sử dụng thuộc tính của Square Brackets
Hiểu tại sao Truy cập các giá trị bằng cách sử dụng thuộc tính của Square BracketsHiểu tại sao
Hiểu tại saoTruy cập các giá trị bằng cách sử dụng trình truy cập thuộc tính dot hoặc gán các giá trị bằng cách sử dụng phá hủy đối tượng Truy cập các giá trị bằng cách sử dụng trình truy cập thuộc tính dot hoặc gán các giá trị bằng cách sử dụng phá hủy đối tượngTại sao nó hoạt động bằng cách sử dụng Trình truy cập tài sản Square Brackets?
Các trường hợp khác gây ra sự nhầm lẫn Tại sao nó hoạt động bằng cách sử dụng Trình truy cập tài sản Square Brackets?Các trường hợp khác gây ra sự nhầm lẫn
Dựa trên định nghĩa của tôi, tôi không thể xác định khóa bằng cách sử dụng kiểu dữ liệu khác với chuỗi. Hãy để tiếp tục và thử tạo đối tượng sau:
Nếu bạn đã thử như sau, bạn nhận thấy bạn đã không nhận được bất kỳ lỗi nào. Trên thực tế, nếu bạn sử dụng các công cụ nhà phát triển trình duyệt yêu thích của bạn và thử chạy các thử nghiệm của bạn ở đó, nó sẽ cung cấp cho bạn ấn tượng ban đầu, bạn có thể thêm số cho một khóa đối tượng. Các trường hợp khác gây ra sự nhầm lẫnDựa trên định nghĩa của tôi, tôi không thể xác định khóa bằng cách sử dụng kiểu dữ liệu khác với chuỗi. Hãy để tiếp tục và thử tạo đối tượng sau:
Nếu bạn đã thử như sau, bạn nhận thấy bạn đã không nhận được bất kỳ lỗi nào. Trên thực tế, nếu bạn sử dụng các công cụ nhà phát triển trình duyệt yêu thích của bạn và thử chạy các thử nghiệm của bạn ở đó, nó sẽ cung cấp cho bạn ấn tượng ban đầu, bạn có thể thêm số cho một khóa đối tượng. Sự kết luậnJavaScript cung cấp nhiều cách để truy cập các thuộc tính đối tượng có thể dẫn đến việc giải thích sai lệch liên quan đến cách thức hoạt động của ngôn ngữ, như gán các khóa cho một đối tượng. Cách tốt nhất để chứng minh mọi thứ hoạt động bằng cách này hay cách khác là tự mình thử nghiệm ngôn ngữ lập trình. Khóa có phải là một chuỗi không?Bạn không cần phải sử dụng các chuỗi hoặc số nguyên mà bạn có thể sử dụng phao, booleans, thậm chí cả bộ đếm làm phím.—you can use floats, Booleans, even tuples as keys.
Điều gì có thể là một chìa khóa trong JavaScript?Tên thuộc tính đối tượng JavaScript (khóa) chỉ có thể là các chuỗi hoặc ký hiệu - tất cả các khóa trong ký hiệu khung vuông được chuyển đổi thành chuỗi trừ khi chúng là ký hiệu.strings or Symbols — all keys in the square bracket notation are converted to strings unless they are Symbols.
Một đối tượng có thể là một JavaScript khóa?Bạn có thể sử dụng các đối tượng làm khóa đối tượng trong JavaScript không?# Câu trả lời ngắn gọn là không".Tất cả các phím đối tượng JavaScript là chuỗi.All JavaScript object keys are strings.
Các phím đối tượng có chuyển đổi thành chuỗi không?Nếu khóa của bạn không phải là một chuỗi, JavaScript sẽ chuyển đổi nó thành một chuỗi khi bạn sử dụng nó làm tên thuộc tính.Lưu ý rằng nếu bạn không cung cấp tostring, các phím sẽ là chuỗi "[đối tượng đối tượng]".. Note that if you didn't provide a toString , the keys would have been the string "[object Object]" . |