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语句定义的变量不必具有相同的类型,如下所示:

var a=12,b="string";

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

var a;
//只声明

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

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

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

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

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

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

当然,只是因为变量名的语法正确并不意味着就该使用它们。变量还应遵守一条著名的命名规则:

  • 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

javascript快速入门7--ECMAScript语法基础的更多相关文章

  1. vue 快速入门 系列 —— vue 的基础应用(上)

    其他章节请看: vue 快速入门 系列 vue 的基础应用(上) Tip: vue 的基础应用分上下两篇,上篇是基础,下篇是应用. 在初步认识 vue一文中,我们已经写了一个 vue 的 hello- ...

  2. php随笔3-thinkphp 学习-ThinkPHP3.1快速入门(1)基础

    ThinkPHP3.1快速入门(1)基础 简介 ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发 框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在 ...

  3. JavaScript快速入门(四)——JavaScript函数

    函数声明 之前说的三种函数声明中(参见JavaScript快速入门(二)——JavaScript变量),使用Function构造函数的声明方法比较少见,我们暂时不提.function func() { ...

  4. vue 快速入门 系列 —— vue 的基础应用(下)

    其他章节请看: vue 快速入门 系列 vue 的基础应用(下) 上篇聚焦于基础知识的介绍:本篇聚焦于基础知识的应用. 递归组件 组件是可以在它们自己的模板中调用自身的.不过它们只能通过 name 选 ...

  5. JavaScript快速入门-简介

    一.JavaScript历史(摘自w3school) JavaScript 是因特网上最流行的脚本语言,它存在于全世界所有 Web 浏览器中,能够增强用户与 Web 站点和 Web 应用程序之间的交互 ...

  6. JavaScript快速入门(一)——JavaScript概览

    JavaScript是什么? JavaScript的诞生 在1995年前后,当时世界上的主流带宽为28.8Kbps,现在世界平均下载带宽为21.9Mbps(数据来源于http://www.netind ...

  7. JavaScript 快速入门

    JavaScript是jquery的基础, JavaScript是一种描述性语言 JavaScript的组成 :ECMAScript,BOM,DOM. JavaScript的基本结构 <scri ...

  8. Apache Shiro 快速入门教程,shiro 基础教程

    第一部分 什么是Apache Shiro     1.什么是 apache shiro :   Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理 ...

  9. javascript快速入门2--变量,小学生数学与简单的交互

    变量 对于变量的理解:变量是数据的代号.如同人的名字一样. var num;//在JavaScript中使用关键字var声明一个变量 在JavaScript中,使用上面的语法,就可以声明一个变量,以便 ...

随机推荐

  1. mongodb的数据库操作

    1.创建数据库 语法 MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. 1.创建数据库 > show dbs ...

  2. 命令行工具PathMarker

    一直使用Guake 终端,Guake提供的其中一个功能是快速打开. 大概的意思就是,显示在终端上的数据会经过匹配,如果符合一定的规则,则可以按住ctrl,使用鼠标单击以触发指定操作. 比如对于一个文件 ...

  3. SuSE Linux10.1 网络设置以及和主机通信end

    设置步骤如下: 1.首先判断VMware Bridge Protocol协议是否已经安装.在本地连接的属性中可以查看. 2.虚拟机设置为bridged 3. 虚拟机-Edit-Virtual Netw ...

  4. postman发送post请求,报405 Method Not Allowed

    postman发送post请求,报405 Method Not Allowed: 亲测有效的方案一: 检查请求header是否缺少必要信息.如果不清可以把所有的头部信息全部粘贴到header中,尝试是 ...

  5. C#中文乱码转换

    string text="中文";string keyword;byte[] buffer= Encoding.UTF8.GetBytes(text);keyword=Encodi ...

  6. 【洛谷P3708】Koishi的数学题

    可以很显然的看出分块的性质…… 看不出来的打个表也能看出来. 然后就是随手做做就行了. #include<bits/stdc++.h> #define N 1000005 typedef ...

  7. 如何在xcode中启用xib方式做应用

    使用storybord的好处和缺点这里不一一说,但是很多人可能习惯xib的方式进行应用的开发. 在xcode环境下可参考如下链接进行设定. http://codefromabove.com/2014/ ...

  8. 一点关于"fat model, skinny controller"的思考

    导言 想来从事服务器端开发也有将近一年的时间,服务端开发不能忽略的一个架构就是MVC架构,但一开始作为小白的我对这些高大上的概念也是很迷惑,由于很长一段时间应对的业务也是十分简单,业务代码也是流水一样 ...

  9. python通过多进程实行多任务

    #原创,转载请联系 在开始之前,我们要知道什么是进程.道理很简单,你平时电脑打开QQ客户端,就是一个进程.再打开一个QQ客户端,又是一个进程.那么,在python中如何用一篇代码就可以开启几个进程呢? ...

  10. UpdateData、Invalidate、InvalidateRect和UpdateWindow及RedrawWindow

    Invalidate 在消息队列中加入一条WM_PAINT消息,其无效区为整个客户区. 窗口的客户区无效意味着需要重绘.例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的 ...