JavaScript基本概念(二)

五、严格模式

ECMAScript 5 引入严格模式 (strict mode)的概念。严格模式是为JavaScript 定义了一种不同的解析与执行模型。在严格模式下,ECMAScript 3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:
“use  strict”;

  这段代码看起来像是字符串,而且也没有赋值给任何变量,但其实它是一个编译指示(pragma),用于告诉支持的JavaScript引擎切换到严格模式。这是为了不破坏ECMAScript 3 语法而特意选定的语法。
  在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:
  function doSomething(){
      "use strict";
        //函数体
  }
  严格模式下,JavaScript的执行结果会有很大不同,因此本书将会随时指出严格模式下的区别。支持严格模式的浏览器包括IE10+、Safari 5.1+、Opera 12+和Chrome。

六、语句

ECMAScript中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾,如下例所示:
      var sum = a + b  // /即使没有分号也是有效的语句---不推荐
      var diff = a+b ; //有效语句----推荐
    虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为加上这个分号可是避免很多错误(例如不完整的输入),开发人员也可以放心地通过删除多余的空格来压缩ECMAScript代码(代码行 结尾处没有分号会导致压缩错误)。另外,加上分号也会在某些情况下增进代码的性能,因此这样解析器就不必再花时间推测应该在哪里插入分号了。
    可以使用C风格的语法把多条语法组合到一个代码块中,即代码块以左({)开头,以右花括号(})结尾:
    if( test ){
        test = false ;
        alert(test);
    }
     虽然条件控制语句(如 if 语句)只在执行多条语句的情况下才要求使用代码块,但最佳实践是始终控制语句中使用代码块---即使代码块中只有一条语句,例如:
    if( test )
          alert(test); //有效但容易出错,不要使用
    if( test ){          //推荐使用
          alert(test); 
    }
    ***在控制语句中使用代码块可以让编码意图更加清晰,而且也能降低修改代码时出错的几率。

七、关键字和保留字

  ECMA-262描述了一组特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。以下就是ECMAScript的全部关键字(带*号上标的是第五版新增的关键字): 
   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 
  ECMA-262 还描述了另一组不能用作标识符的保留字,尽管保留字在这门语言中还没有任何的用途,但它们有可能在将来被用来作关键字。以下是ECMA-262第三版定义的全部保留字:
abstract  enum  int  short  boolean  export   interface   static
byte  extends  long  super  char  final  native  synchronized 
class  float package  throws  const  goto  private  transient 
 debugger  implements  protected  volatile   double  import 
public
*第五版把在非严格模式下运行时的保留字缩减为下列这些:
class  enum  extends  super 
const   export  import
*在严格模式下,第五版还对以下保留字施加了限制:
 implements  package public interface  private static 
 let   protected yield
 注意:let 和 yield 是第5版新增的保留字;其他保留字都是第3版定义的。为了最大程度地保证兼容性。建设读者将第3版定义的保留字外加let 和 yield作为编程时的参考。
在实现ECMAScript 3 的 JavaScript 引擎中使用关键字作标识符,会导致“Identifer Expected” 错误。而使用保留字作标识符也可能不会导致相同的错误,具体取决于特定的引擎。
第5版对使用关键字和保留字的规则进行了不许修改,关键字和保留字虽然仍然不能作为标识符使用,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字作为标识符和保留字作为标识符和属性名,以便与将来的ECMAScript版本兼容。
除了上面列出的保留字和关键字,ECMA-262第5版对eval和argum 

还施加了限制。在严格模式下,这两个也不能作为标识符或属性名,否则会抛出错误。

变量

    ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据,换句话说,每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用var操作符(注意 var 是一个关键字),后台变量名(即一个标识符),如下所示:
    var message;
   这行代码定义了一个名为 message 的变量,该变量可以用来保存任何值(像这样未经过初始化的变量,会保存一个特殊的值---undefined)。ECMAScript也支持直接初始化变量,因此在定义变量的同时就可以设置变量的值,如下所示:
  var  message = "hi";
    在此,变量message中保存了一个字符串值“hi”,像这样初始化变量并不会把它标记为字符串类型;初始化的过程就是给变量附一个值那么简单。

你可能感兴趣的:(JavaScript基本概念(二))