javascript快速入门7--ECMAScript语法基础

ECMAScript的基础概念

熟悉Java、C和Perl这些语言的开发者会发现ECMAScript的语法很容易掌握,由于它借用了这些语言的语法。Java和ECMAScript有一些关键语法特性相同,也有一些彻底不一样。ECMAScript的基础概念以下:正则表达式

  • 区分大小写。与Java同样,变量、函数名、运算符以及其余一切东西都是区分大小写的,也就是说,变量test不一样于变量Test。
  • 变量是弱类型的。与Java和C不一样,ECMAScript中的变量无特定的类型,定义变量时只用var运算符,能够将它初始化为任意的值。这样能够随时改变变量所存数据的类型(尽管应该避免这样作,但做为Web开发,这确实能够提升效率)。
  • 每行结尾的分号无关紧要。Java、C和Perl都要求每行代码以分号(;)结束才符合语法。ECMAScript则容许开发者自行决定是否以分号结束一行代码。若是没有分号,ECMAScript就把这行代码的结尾看做该语句的结尾(与Visual Basic和VBScript类似),前提是这样没有破坏代码的语义。最好的代码编写习惯是总加入分号,由于没有分号,有些浏览器就不能正确运行!
  • 注释与Java、C和PHP语言的注释相同。ECMAScript借用了这些语言的注释语法。有两种类型的注释——单行注释和多行注释。单行注释以双斜线(//)开头。多行注释以单斜线和星号(/*)开头,以星号加单斜线结尾(*/)。
  • 括号代表代码块。从Java中借鉴的另外一个概念是代码块。代码块表示一系列应该按顺序执行的语句,这些语句被封装在左括号({)和右括号(})之间。

一些示例以下:数组

    var txt = "some string";
    TXT = "other string";//TXT无须声明,能够直接赋值
    alert(txt==TXT);//false
    var str = "string" //分号无关紧要
    var hob = "No";var bob = "Yes";//使用分号,能够在一行上写多行语句
    /*
    多行注释
    alert("注释中的代码不会被执行")
    */
    if (txt=="some string") {//代码块
        alert(true);
    }

 

变量

如前所述,ECMAScript中的变量是用var运算符(variable的缩写)加变量名定义的,例如:浏览器

var test = "Hello!World!";

 

在这个例子中,声明了变量test,并把它的值初始化为"Hello!World!"(字符串)。因为ECMAScript是弱类型的,因此解释程序会为test自动建立一个字符串值,无需明确的类型声明。还能够用一个var语句定义两个或多个变量:函数

var a = "some",b="string"

 

前面的代码定义了变量test,初始值为"some",还定义了变量test2,初始值为"string"。不过用同一个var语句定义的变量没必要具备相同的类型,以下所示:this

var a=12,b="string";

 

即便a和b属于两种不一样的数据类型,在ECMAScript中这样定义也是彻底合法的。与Java不一样,ECMAScript中的变量并不必定要初始化(它们是在幕后初始化的,将在后面讨论这一点)。所以,下面一行代码也是有效的:编码

var a;
//只声明

 

此外,与Java不一样的还有变量能够存放不一样类型的值。这是弱类型变量的优点。例如,能够把变量初始化为字符串类型的值,以后把它设置为数字值,以下所示:spa

    var test = "string";
    alert(test);
    //.....若干代码后
    test=123;//更改了类型
    alert(test);

 

这段代码将毫无问题地输出字符串值和数字值。可是,如前所述,使用变量时,好的编码习惯是始终存放相同类型的值。变量名须要遵照两条简单的规则:debug

  • 第一个字符必须是字母、下划线(_)或美元符号($)
  • 余下的字符能够是下划线、美元符号或任何字母或数字字符。

下面的变量名都是合法的:设计

    var a;
    var $a;
    var $;
    var _a;
    var _;
    var a23;

 

固然,只是由于变量名的语法正确并不意味着就该使用它们。变量还应遵照一条著名的命名规则:code

  • Camel标记法——首字母是小写的,接下来的单词都以大写字母开头
  • Pascal标记法——首字母是大写的,接下来的单词都以大写字母开头
  • 匈牙利类型标记法——在以Pascal标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i表示整数,s表示字符串

下面的表列出了用匈牙利类型标记法定义ECMAScript变量使用的前缀:

类型 前缀 示例
数组 a aValues
布尔型 b bFound
浮点型(数字) f fValue
函数 fn fnMethod
整型(数字) i iValue
对象 o oType
正则表达式 re rePattern
字符串 s sValue
变型(能够是任何类型) v vValue

下面是一些命名示例   

 var userName="CJ";//驼峰命名方式
    var UserName="CJ";//Pascal命名方式
    var sUserName="CJ";//匈牙利命名方式

 

ECMAScript另外一个有趣的方面(也是与大多数程序设计语言的主要区别)是在使用变量以前没必要声明。例如:

    var str ="some";
    otherStr += str+" "+"string";
    alert(otherStr);

 

在上面的代码中,变量otherStr并无用var运算符定义,这里只是插入了它,就像已经声明过它。ECMAScript的解释程序遇到未声明过的标识符时,用该变量名建立一个全局变量,并将其初始化为指定的值。这是该语言的便利之处,不过若是不能紧密跟踪变量,这样作也很危险。最好的习惯是像使用其余程序设计语言同样,老是声明全部变量。

关键字

ECMA-262定义了ECMAScript支持的一套关键字(keyword)。这些关键字标识了ECMAScript语句的开头和/或结尾。根据规定,关键字是保留的,不能用做变量名或函数名。下面是ECMAScript关键字的完整列表:

break else new var
case finally return void
catch for switch while
continue function this with
default if throw  
delete in try  
do instanceof typeof  

若是把关键字用做变量名或函数名,可能获得诸如“Identifier expected”(应该有标识符,缺乏标识符)这样的错误消息。

保留字

保留字是对于JavaScript有特殊含义的单词。所以,不能将它们用做变量名或函数名。也就是说,它们多是JavaScript将来版本中的命令。如今就应该避免使用它们,以避免在新版本发布时不得不修改代码。若是将保留字用做变量名或函数名,那么除非未来的浏览器实现了该保留字,不然极可能收不到任何错误消息。当浏览器将其实现后,该单词将被看做关键字,如此将出现关键字错误。

ECMAScript 3为之后保留的单词:

abstract final protected
boolean float public
byte goto short
char implements static
class import super
const int synchronized
debugger interface throws
double long transient
enum native volatile
export package extends
private    

ECMAScript 4:ECMAScript4如今尚未什么实现.ECMAScript4中,下面的再也不是保留字了,但也应该尽可能不要使用它们

boolean final short byte float static char int double long

下面的被加入了保留字

as namespace use false true null is
相关文章
相关标签/搜索