Javascript中的关键字和保留字

以下大部摘自《Javascript高级程序设计》:

1、ECMA-262描述了一组具有特定用途的关键字,这些关键字可用于表示标准语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的(注意:也就是说,关键字也属于保留字),不能用作标识符。以下就是ECMAScript中的全部关键字(带*号上标的是第5版新增的关键字):(按字母顺序排名)

break   case  catch  continue  debugger*  default  delete  do

else  finally  for  function  if  in  instanceof  new  return  switch

this  throw  try  typeof  var  void  while  with\

2、ECMA-262还描述了另外一组不能用作标识符的保留字。尽管这些保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:(按字母顺序排名)

abstract  boolean  byte  char  class  const  debugger  double  

enum  export  extends  final  goto  implements  import  int

interface  long  native  package  private  protected  public  

short  static  super  synchronized  throws  transient  volatile

3、第5版把在非严格模式下运行时的保留字缩减为以下这些:

class  const  enum  export  extends  import  super

在严格模式下,第5版还对以下保留字施加了限制:

implements  interface  let  package  private  protected  public  static  yield

注意:letyield是第5版新增的保留字,其他保留字还是第3版定义的。为了最大程度的保证兼容性,建议将第3版定义的全部保留字外加let和yield作为编程时的参考。


    在实现ECMAScript3的JavaScript引擎中使用关键字作标识符,会导致“Identifier Expected”错误。而使用保留字作为标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。

    第5版对使用关键字和保留字的规则进行了少许修改。关键字和保留字虽然仍然不能用作标识符,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字用作标识符和属性名,以便与将来的ECMAScript版本兼容。

    除了上面列出的保留字和关键字,ECMA-262第5版对eval和arguments还施加了限制。在严格模式下,这两个名字也不能作为标识符或属性名,否则会抛出错误。


关于关键字和保留字的区别与联系:

总的来说,关键字是属于保留字的。

从字面含义上理解,保留字是语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。而关键字则指在语言中有特定含义,成为语法中一部分的那些字。一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。就比如说,以上所述Javascript中的一些未来保留字,如abstract、double、goto等等。它可能未来要增加直接跳转的功能,那么为了使当前版本的程序代码能向后兼容,所以不允许使用goto作为变量名,但当前版本的语言并不支持goto的直接跳转功能,它目前就不是关键字。

你可能感兴趣的:(学习总结,JavaScript)