JavaScript'te ayrılmış anahtar kelimeler


Yanıtlar:



1476

JavaScript'teki tüm ayrılmış anahtar kelimeleri içeren ve şu anda dürüst kalanlara adanmış ve sadece puanlamaya çalışmayan şiirim:

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

Benc'in cevabını tamamlamak için , bkz. Standart ECMA-262 . Bunlar resmi rezerve edilmiş kelimelerdir, ancak standarda uymak için uygulamayı sadece bilgiç görmezden gelir. En popüler uygulamaların, yani firefox ve internet explorer'ın ayrılmış sözcükleri için benc'in cevabına bakın.

EMCAScript-262 ayrılmış kelimeler Anahtar s, Geleceğin ayrılmış bir kelime s, NullLiteral ve BooleanLiteral s, Anahtar olan

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

Gelecek Ayrılmış Kelime ler vardır

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 olduğunu

null

ve BooleanLiteral s

true
false

Joseph, bu bilgiyi eklediğin için teşekkürler. Bu PDF'yi Google'da buldum, ancak hepsini açmak ve okumak için zamanım yoktu.
benc

"Soyut" gelecekteki ayrılmış sözcük, ne ES5 spesifikasyonunda ne de ES6 taslağında belirtilmemiştir. Bu nereden geldi?
Vladimir Panteleev

2
Buldum! ES3'te, başkalarının uzun bir listesiyle birlikte gelecekteki ayrılmış bir kelime olarak mevcuttu, ancak ES5'te kaldırıldı.
Vladimir Panteleev

13
Bu nasıl bir cevap. Hatta kafiye bile yok.
Gajus

1
Göremiyorum letburada ama docu görüyorum: ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
prosti

20

Ben sadece JavaScript & jQuery bu konuda okuyordum : Eksik Kılavuz :

Bu ayrılmış kelimelerin tümü tüm tarayıcılarda sorunlara neden olmaz, ancak değişkenleri adlandırırken bu adlardan uzak durmak en iyisidir.

JavaScript anahtar kelimeler: 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 .

Gelecek kullanım için ayrılmış: 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 .

Tarayıcıda küresel değişkenleri önceden tanımlanmış: alert, blur, closed, document, focus, frames, history, innerHeight, innerWidth, length, location, navigator, open, outerHeight, outerWidth, parent, screen, screenX, screenY, statusbar, window .


Bir komut dosyasında yer ve çok garip davranış, çok yararlı yazı var.
alimack

2
"Gelecekte kullanılmak üzere ayrılmıştır" :: Tüm Java sözcükleri ... gerçekten çok tembel.
Eddie B

2
“Ayrılmış” ın “önceden başlatılmış” ile aynı olmadığını unutmayın. Tarayıcıda alertzaten başlatılmış, ancak hiçbir şey yeniden atamanızı engellemiyor alert = 5. Ancak, window5 olarak ayarlayamazsınız , ancak yerel değişken olarak kullanabilirsiniz. Yani saklıdır anahtar kelimeler, ileride kullanmak mümkün olmayacak, null, false, true.
Ruben Verborgh

Daha yieldhızlı oylama cevaplarımın yanı sıra benden +1 cevapsız . Bunlar ES5.1'de sıkı mod ile etkinleştirilebilir:implements interface let package private protected public static yield

5

Burada, belirli bir dizenin JavaScript motoru tarafından anahtar kelime olarak ele alınıp alınmadığını belirlemenin bir tarayıcı ve dil sürümü agnostik yolu. Çözümün çekirdeğini sağlayan bu cevaba verilen krediler .

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

7
Herhangi bir evalşey için kullanmanız gerekiyorsa, büyük olasılıkla yanlış yaptığınız anlamına gelir.
15'te SeinopSys

8
Bu, çalışma zamanında maruz kaldığınız bir şey olmadığı sürece tamamen geçerli olan, test zamanında çalıştırılan bir test vakası için mükemmeldir.
Abdullah Jibaly

3

Mevcut cevapların hiçbiri, ES-Dialect ne olursa olsun, tarayıcıların ES'nin belirlediği şeylerin üstünde kendi ayrılmış anahtar kelime, yöntem vb.

Örneğin, IE9 gibi mantıksal isimlerin kullanılmasına izin vermemektedir: addFilter,removeFilter (bunlar, diğerlerinin yanı sıra, yöntem muhafaza edilmiştir).

IE9'a özgü daha kapsamlı 'şu anda bilinen' bir liste için http://www.jabcreations.com/blog/internet-explorer-9 adresine bakın . Henüz msdn'de (veya başka bir yerde) herhangi bir resmi referans bulmadım.


1

Eloquent JavaScript kitabından bir liste:

  • 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

benc'in cevabı mükemmel, ancak iki sentim için w3schools'un bu sayfadaki sayfasını beğeniyorum:

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

Standart tarafından ayrılan anahtar kelimeleri listelemenin yanı sıra , belirli bağlamlarda kaçınmanız gereken uzun bir anahtar kelime listesi de vardır ; örneğin, alertbir tarayıcıda çalıştırılacak kodu yazarken adı kullanmamak . Anahtar kelimeler olmadığını bilsem bile editörümde belirli kelimelerin neden anahtar kelime olarak vurgulandığını anlamama yardımcı oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.