Các từ khóa dành riêng trong JavaScript


Câu trả lời:



1476

Đây là bài thơ của tôi, bao gồm tất cả các từ khóa dành riêng trong JavaScript và dành riêng cho những người trung thực trong thời điểm này, và không chỉ cố gắng ghi điểm:

Let this long package float, 
Goto private class if short.
While protected with debugger case,  
Continue volatile interface.
Instanceof super synchronized throw, 
Extends final export throws.  

Try import double enum?  
- False, boolean, abstract function, 
Implements typeof transient break!
Void static, default do,  
Switch int native new. 
Else, delete null public var 
In return for const, true, char
…Finally catch byte.


61

Để bổ sung câu trả lời của benc , xem Tiêu chuẩn ECMA-262 . Đây là những từ dành riêng chính thức, nhưng chỉ có một người bán hàng bỏ qua việc thực hiện để tôn trọng tiêu chuẩn. Đối với các từ dành riêng của các triển khai phổ biến nhất, đó là firefox và internet explorer, xem câu trả lời của benc.

Các từ dành riêng trong EMCAScript-262 là Từ khóa , Từ dành riêng trong tương lai , NullLiteralBooleanLiteral , trong đó Từ khóa

break     do        instanceof  typeof
case      else      new         var
catch     finally   return      void
continue  for       switch      while
debugger  function  this        with
default   if        throw
delete    in        try

các từ dành riêng trong tương lai

abstract  export      interface  static
boolean   extends     long       super
byte      final       native     synchronized
char      float       package    throws
class     goto        private    transient
const     implements  protected  volatile
double    import      public 
enum      int         short

các NullLiteral

null

BooleanLiteral

true
false

Joseph, cảm ơn vì đã thêm thông tin đó. Tôi thấy rằng PDF trong google, nhưng không có thời gian để mở và đọc tất cả.
benc

Từ dành riêng trong tương lai "trừu tượng" không được đề cập trong cả thông số ES5 và dự thảo ES6. Thứ đó đã đến từ đâu?
Vladimir Panteleev

2
Tìm thấy rồi! Nó đã có mặt trong ES3 như một từ dành riêng trong tương lai, cùng với một danh sách dài những từ khác, nhưng nó đã bị xóa trong ES5.
Vladimir Panteleev

13
Đây là loại câu trả lời. Nó thậm chí không vần.
Gajus

1
Tôi không thể nhìn thấy letở đây, nhưng tôi nhìn thấy nó trong docu: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti

20

Tôi mới đọc về điều này trong JavaScript & jQuery: Hướng dẫn thiếu :

Không phải tất cả các từ dành riêng này sẽ gây ra sự cố trong tất cả các trình duyệt, nhưng tốt nhất là tránh xa các tên này khi đặt tên biến.

Từ khóa JavaScript : break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with .

Dành cho sử dụng trong tương lai : abstract, boolean, byte, char, class, const, double, enum, export, extends, final, float, goto, implements, import, int, interface, let, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile, yield .

Các biến toàn cục được xác định trước trong trình duyệt : alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .


Được sử dụng vị trí trong một kịch bản và có hành vi rất kỳ quặc, bài viết rất hữu ích.
alimack

2
"Dành cho sử dụng trong tương lai" :: Tất cả các từ Java ... thực sự khá lười biếng.
Eddie B

2
Lưu ý rằng, khu bảo tồn và không giống như trước đó. Trong trình duyệt, alertđã được khởi tạo, nhưng không có gì ngăn bạn gán lại alert = 5. Tuy nhiên, bạn không thể đặt windowthành 5, nhưng bạn có thể sử dụng nó làm biến cục bộ. Đó là không thể với các từ khóa dành riêng, sử dụng trong tương lai, null, false, true.
Ruben Verborgh

Càng nhiều câu trả lời bỏ phiếu bị bỏ qua yieldbởi kiểm tra nhanh của tôi nên +1 từ tôi. Những thứ này trong ES5.1 có thể được kích hoạt bằng chế độ nghiêm ngặt:implements interface let package private protected public static yield

5

Dưới đây là một cách thức bất khả tri của trình duyệt và phiên bản ngôn ngữ để xác định xem một chuỗi cụ thể có được xử lý như một từ khóa của công cụ JavaScript hay không. Tín dụng cho câu trả lời này cung cấp cốt lõi của giải pháp.

function isReservedKeyword(wordToCheck) {
    var reservedWord = false;
    if (/^[a-z]+$/.test(wordToCheck)) {
        try {
            eval('var ' + wordToCheck + ' = 1');
        } catch (error) {
            reservedWord = true;
        }
    }
    return reservedWord;
}

7
Nếu bạn phải sử dụng evalcho bất cứ điều gì, rất có thể có nghĩa là bạn đang làm sai.
SeinopSys 18/03/2015

8
Điều này là hoàn hảo cho một trường hợp thử nghiệm chạy trong thời gian xây dựng, hoàn toàn hợp lệ miễn là nó không phải là thứ bạn đã tiếp xúc khi chạy.
Abdullah Jibaly 18/03/2015

3

Không có câu trả lời nào hiện tại cảnh báo rằng bất kể ES-Dialect, các trình duyệt có xu hướng có danh sách từ khóa dành riêng, phương thức, v.v. trên đầu trang của ES.

Ví dụ: IE9 cấm sử dụng các tên logic như : addFilter, removeFilter(chúng, trong số các phương thức khác, là các phương thức dành riêng).

Xem http://www.jabcreations.com/blog/iNET-explorer-9 để biết danh sách 'hiện được biết đến' rộng rãi hơn dành riêng cho IE9. Tôi chưa tìm thấy bất kỳ tài liệu tham khảo chính thức nào cho họ trên msdn (hoặc ở nơi khác).


1

Đây là danh sách từ cuốn sách Eloquent JavaScript:

  • break
  • case
  • catch
  • class
  • const
  • continue
  • debugger
  • default
  • delete
  • do
  • else
  • enum
  • export
  • extend
  • false
  • finally
  • for
  • function
  • if
  • implements
  • import
  • in
  • instanceof
  • interface
  • let
  • new
  • null
  • package
  • private
  • protected
  • public
  • return
  • static
  • super
  • switch
  • this
  • throw
  • true
  • try
  • typeof
  • var
  • void
  • while
  • with
  • yield

-1

Câu trả lời của benc là tuyệt vời, nhưng với hai xu của tôi, tôi thích trang w3schools về điều này:

http://www.w3schools.com/js/js_reserved.asp

Ngoài việc liệt kê các từ khóa được bảo lưu theo tiêu chuẩn, nó còn có một danh sách dài các từ khóa bạn nên tránh trong các bối cảnh nhất định; ví dụ, không sử dụng tên alertkhi viết mã để chạy trong trình duyệt. Nó giúp tôi tìm ra lý do tại sao một số từ nhất định được làm nổi bật là từ khóa trong trình chỉnh sửa của tôi mặc dù tôi biết chúng không phải là từ khóa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.