JavaScript的基本概念

主要内容:

  • 语法
  • 数据类型
  • 流控制语句
  • 理解函数

ECMA-262描述了JavaScript语法等基本概念。目前,ECMA-262第3版中定义的ECMAScript是各个浏览器实现最多的版本。所以主要按照第3版地冠以的ECMAScript介绍语言的基本概念,并就第5版的变化给出说明

3.1 语法

3.1.1 区分大小写   

       例如 test与Text分别表示两个不同的变量。函数名称不能用typeof,但是TypeOf是一个有效的函数名。

3.1.2 标识符

       所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以按照下列格式规则组合起来的一个或多个字符:

       第一个字符必须是字母、下划线(_)或美元符号($)。

       其他字符可以是字母、下划线、美元符号或数字。

       标识符中的字母可以包含扩展的ASCII或Unicode字母字符,但是不推荐这样做。标识符命名采用驼峰命名法。

      关键字、保留字、true、false和null不能用作标识符。

3.1.3 注释

       与C风格注释相同,包括单行注释和块级注释。

      //单行注释

      /*

           多行( 块级)注释

      */

3.1.4 严格模式

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

    "use strict"

    在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:

    function doSomething(){

          "use strict"

         //函数体

   }

   支持严格模式的浏览器包括IE10+、Firefox 4+、Safari 5.1+、Opera 112+ 和Chrome。

3.1.5 语句

   ECMAScript中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾。虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它。因为这样可以避免很多错误。

3.2 关键字和保留字

   ECMA-262描述了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或用于执行特定的操作等。ECMAScript的全部关键字(带*号的是第5版新增关键字)如下:

  

   ECMA-262还描述了另外一组不能用作标识符的保留字,它们有可能将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:

   

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

 

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

       let和yield是第5版新增的保留字

3.3 变量

     ECMAScript的变量是松散类型的,可以保存任何类型的数据。每个变量仅仅是一个用于保存值得占位符而已。定义变量时要使用var操作符。

     var message;

     这行代码定义了一个名字为message的变量,该变量可以用来保存任何值(未经初始化的变量,会保存一个特殊的值undefined)。ECMAScript也支持直接初始化变量,因此在定义变量的同时可以设置变量的值。

    var message="hello";

    message=100;//有效,但不推荐。

    使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁,例如:

    function test(){

         var message="hello";//局部变量

    } 

    test();

    alert(message);//错误

    如果定义变量时,省略了var,这就会创建一个全局变量

      function test(){

         message="hello";//局部变量

    } 

    test();

    alert(message);//"hello"

     这样,只要调用过一次test()函数,这个变量就有了定义,就可以在函数外部的任何地方被访问到。

     虽然省略var操作符可以定义全局变量,但是我们不推荐这么做。因为在局部作用域中定义的全局变量很难维护,而且如果有意地忽略var操作符,也会由于相应 的变量不会马上就有定义而导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致抛出ReferenceError错误。

    可以使用一条语句定义多个变量,之间用逗号分隔

    var message="hello",

          found=false,

          age=18;

   在严格模式下,不能定义名为eval或arguments的变量,否则会导致错误。

         

 

posted @ 2016-04-17 21:54  北京记忆  阅读(275)  评论(0编辑  收藏  举报