Зарезервовані ключові слова у JavaScript


Відповіді:



1476

Ось мій вірш, який включає всі зарезервовані ключові слова в JavaScript, і присвячений тим, хто залишається чесним на даний момент, а не просто намагається забити:

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.

5
screenshots.firefox.com/MVw02wDrHPi197kK/stackoverflow.com це змушує мене не хочу натискати це
Kuba Orlik

61

Щоб доповнити відповідь Benc , див. Стандарт ECMA-262 . Це офіційні зарезервовані слова, але лише педант ігнорує виконання для дотримання стандарту. Зарезервовані слова найпопулярніших реалізацій, тобто Firefox та Internet Explorer, дивіться у відповіді Benc.

Зарезервовані слова в EMCAScript-262 є Ключове слово s, майбутнє зарезервоване слово s, NullLiteral і BooleanLiteral s, де слова є

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

в майбутнє зарезервоване слово s є

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

NullLiteral є

null

і булеві Літеральні є

true
false

Джозеф, дякую за додавання цієї інформації. Я знайшов цей PDF в Google, але не встиг його відкрити і прочитати.
benc

"Абстрактне" майбутнє застережене слово не згадується ні в специфікаціях ES5, ні в проекті ES6. Звідки це взялося?
Володимир Пантелеев

2
Знайшов це! Він був присутній у ES3 як майбутнє зарезервоване слово разом із довгим списком інших, але його було видалено в ES5.
Володимир Пантелеев

13
Яка відповідь така. Це навіть не римується.
Гаджус

1
Я не бачу letтут, але бачу це в документі: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti

20

Я щойно читав про це у JavaScript та jQuery: Посібник про відсутність :

Не всі ці зарезервовані слова спричинять проблеми у всіх браузерах, але найкраще уникати цих імен під час іменування змінних.

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 .

Зарезервовано для використання в майбутньому: 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 .

Попередньо певні глобальні змінні в браузері: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .


Використовували місце в сценарії та отримували дуже дивну поведінку, дуже корисну публікацію.
alimack

2
"Зарезервовано для подальшого використання": Усі слова Java ... дуже ліниво.
Едді Б

2
Зауважте, що "зарезервовано" не те саме, що "попередньо ініціалізовано". У браузері alertвже ініціалізовано, але ніщо не заважає вам перепризначити alert = 5. Однак ви не можете встановити window5, але ви можете використовувати його як локальну змінну. Це не можливо з зарезервованими ключовими словами, використанням в майбутньому, null, false, true.
Рубен Верборг

Більше проголосованих відповідей пропущено yieldмоєю швидкою перевіркою, тому +1 від мене. Вони можуть у ES5.1 бути активовані суворим режимом:implements interface let package private protected public static yield

5

Ось агностичний спосіб браузера та мовної версії, щоб визначити, чи певна рядок розглядається як ключове слово механізмом JavaScript. Подяка на цю відповідь, яка є основою рішення.

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

7
Якщо вам доведеться використовувати що- evalнебудь, це, швидше за все, означає, що ви робите це неправильно.
SeinopSys

8
Це ідеально підходить для тестового випадку, запущеного під час збирання, повністю дійсного до тих пір, поки це не те, що ви виставили під час виконання.
Абдулла Джибалі

3

Жоден з нинішніх відповідей не застерігає, що незалежно від ES-Dialect, браузери, як правило, мають власні списки зарезервованих ключових слів, методів тощо, крім того, що диктує ES.

Наприклад, IE9 забороняє використання логічних імен , таких як: addFilter, removeFilter(вони, в зокрема, зарезервовані методи).

Див. Http://www.jabcreations.com/blog/internet-explorer-9 для більш широкого списку "відомих на даний момент", характерних для IE9. Я ще не знайшов жодної офіційної посилання на них у msdn (або в іншому місці).


1

Ось список з красномовної книги 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

Відповідь Бенка відмінна, але для моїх двох центів мені подобається сторінка w3schools на цьому:

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

Крім переліку ключових слів, зарезервованих стандартом, він також містить довгий список ключових слів, яких слід уникати в певних контекстах; наприклад, не використовувати ім'я alertпід час написання коду для запуску у браузері. Це допомогло мені зрозуміти, чому певні слова виділяються як ключові слова в моєму редакторі, хоча я знав, що вони не є ключовими словами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.