美文网首页
21天(js高程)-第3天

21天(js高程)-第3天

作者: JerryChen_ | 来源:发表于2016-03-11 23:20 被阅读703次

    第3章 基本概念

    ECMA-262 通过叫做 ECMAScript 的“伪语言”为我们描述了 JavaScript 的所有这些基本概念。

    3.1 语法

    ECMAScript 的语法大量借鉴了 C 及其他类 C 语言(如 Java 和 Perl)的语法。


    3.1.1区分大小写

    ECMAScript 中的一切(变量、函数名和操作符)都区分大小写。


    3.1.2 标识符

    所谓标识符,就是指变量,函数,属性的名字,或者函数的参数。

    第一个字符必须是一个字母、下划线(_)或一个美元符号($);
    其他字符可以是字母、下划线、美元符号或数字。

    按照惯例, ECMAScript 标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,例子:doSomethingImportant

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


    3.1.3注释

    单行注释://
    块级注释/*
                  *这是一个多行
                  *(块级)注释
                */


    3.1.4 严格模式

    ECMAScript 5 引入了严格模式(strict mode)的概念。严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式下, ECMAScript 3 中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。

    要在整个脚本中启用严格模式,可以在顶部添加如下代码:
    " use strict";
    用于告诉支持的JavaScript引擎切换到严格模式。这是为不破坏ECMAScript 3 语法而特意选定的语法。

    在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:
    function doSomething(){
         "use strict";
         //函数体
    }

    严格模式下, JavaScript 的执行结果会有很大不同,支持严格模式的浏览器包括 IE10+、 Firefox 4+、 Safari 5.1+、 Opera 12+和 Chrome。


    3.1.5 语法

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

    可以使用 C 风格的语法把多条语句组合到一个代码块中,即代码块以左花括号({)开头,以右花括号(})结尾:

    if (test){
       test = false;
       alert(test);
    }

    虽然条件控制语句(如if语句)只在执行多条语句的情况下才要求使用代码块,但最佳实践是始终在控制语句中使用代码块——即使代码块中只有一条语句,例如:

    if (test)
        alert(test);          //有效但容易出错,不要使用

    if (test){                 //推荐使用
        alert(test);
    }

    在控制语句中使用代码块可以让编码意图更加清晰,而且也能降低修改代码时出错的几率。


    3.2 关键字和保留字

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

    break; do; instanceof; typeof; case; else; new; var; catch; finally; return; void; contitue;
    for; switch; while; debugger*; function; this; with; delete; in; try

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

    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; 

    第 5 版把在非严格模式下运行时的保留字缩减为下列这些:
    class; enum; extends; super; const; export; import;

    在严格模式下,第 5 版还对以下保留字施加了限制:
    implements; package; public; interface; private; static; let; protected; yield;

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

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

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

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

    3.3 变量

    ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用var 操作符(var 是一个关键字),后跟变量名(即一个标识符)。

    如:var message; 这行代码定义了一个名为 message 的变量,该变量可以用来保存任何值(像这样未经过初始化的变量,会保存一个特殊的值--undefined)

    初始化的过程就是给变量赋一个值那么简单。因此,可以在修改变量值的同时修改值的类型。

    相关文章

      网友评论

          本文标题:21天(js高程)-第3天

          本文链接:https://www.haomeiwen.com/subject/kgkxlttx.html