1、字符集
JavaScript程序是用Unicode字符集编写的。 1.1 区分大小写 JavaScript是区分大小写的语言。也就是说,关键字、变量、函数名和所有标识符(identifier)都必须采取一致的大小写形式。比如:“name”和“Name”是不同的变量。 1.2 空格、换行符和格式控制符 在JavaScript中,会忽略程序中标识之间的空格。而对于换行符,JavaScript在多数情况下也会忽略,但有一种情况例外:当在return、break、continue语句后添加换行符时,JavaScript会在换行处添加分号。 JavaScript可以识别一些特殊字符:
空格符(\u0020)
水平制表符(\u0009)
换页符(\u000C)
换行符(\u000A)
回车符(\u000D)

回车符加换行符在一起被解析为一个单行结束符。 1.3 Unicode转义序列 JavaScript定义了一种特殊序列,用6个ASCII字符来代表任意16位Unicode内码。这些Unicode转义序列均以\u为前缀,其后跟随4个十六进制数(使用数字以及大写或小写字母A~F表示).

2、 注释
JavaScript提供了两种格式的注释。 单行注释: 以//开头 多行注释:放在 /* 和 */之间(可跨行书写,但不能有嵌套注释)

3、 直接量
直接量:程序中直接使用的数据值。比如:
12  //数字
1.2  //小数
"hello world"  //字符串
true  //布尔值
/javascript/gi  //正则表达式直接量
null  //空

4、 标识符和保留字
标识符(identifier)是用来识别具体对象的一个名称。 JavaScript语言的标识符对大小写敏感,所以a和A是两个不同的标识符。 标识符命名规则: 第一个字符不能为数字,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_) 第二个字符及后面的字符,除了Unicode字母、美元符号和下划线,还可以用数字。 中文是合法的标识符,可以用作变量名。 JavaScript有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。 另外,还有三个词虽然不是保留字,但是因为具有特别含义,也不应该用作标识符:Infinity、NaN、undefined。

5、 可选的分号
JavaScript使用分号(;)将语句分隔开。 注意:JavaScript并不是在所有换行处都填补分号,只有在缺少了分号就无法正确解析代码的时候,才会填补分号。也可以说,如果当前语句和随后的非空格字符不能当做一个整体来解析时,JavaScript就在当前语句行结束处填补分号 。比如下面代码:
var a
a
=
3
console.log(a)
JavaScript将其解析为:
var a;a=3;console.log(a);
JavaScript给第一行换行处添加了分号,因为没有分号,JavaScript就无法解析代码var a a。第二个a可以单独当做一条语句“a;”,但JavaScript并没有给第二行结尾填补分号,因为它可以和第三行内容一起解析成“a=3”。
上面的代码解析后是没有问题的,可是没有主动添加分号,有些时候会导致意想不到的情形。比如:
var y=x+f
(a+b).toString()
解析后:
var y=x+f(a+b).toString();
如果当前语句和下一行语句无法合并解析,JavaScript则在第一行后填补分号,这是通用规则,但有两个例外。

第一个例外是在涉及return、break和continue语句的场景总,如果这三个关键字后紧跟换行,JavaScript则会在换行处填补分号。
例如:
return
true;
JavaScript会解析成:
return; true;

第二个例外是在涉及“++”和“--”运算符的时候。
x
++
y
将会解析成 “x;++y”,而不是“x++;y”

适当的添加分号,可避免意想不到的错误。

JavaScript:词法结构的更多相关文章

  1. 第二章:Javascript词法结构

    编程语言的词法结构是一套基础性的规则,用来描述你如何编写这门语言.作为语法的基础,它规定了变量名是怎么样的,如何写注释,以及语句之间是如何区分的.本节用很短的篇幅来介绍javascript的词法结构. ...

  2. javascript 词法结构小结

    作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下js基础,然后把它记录下来. 如其他编程语言一样,词法结构是一门语言的基础,它规定了诸如如何给变量起名字. ...

  3. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)

    1.字符集 JavaScript是用Unicode字符集编写的 2.区分大小写 html不区分大小写,xhtml区分大小写 如:html中onclick可以写成Onclick 但是js中必须写成onc ...

  4. 《JavaScript权威指南》第六版阅读笔记(二):JavaScript词法结构

    JavaScript使用Unicode字符集.ECMAScript3要求JS的实现必须支持Unicode 2.1及后续版本,ECMAScript 5要求JS的实现支持Unicode 3及后续版本. J ...

  5. 第一章javascript词法结构笔记摘要

    语法介绍 javascript最流行的脚本语言,用于web和HTML,服务器.pc.移动端 轻量级语言,可以插入HTML页面,由浏览器按编写顺序执行 一.字符集 用Unicode字符集编写,是ASCI ...

  6. javascript基础语法——词法结构

    × 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...

  7. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  8. Note | javascript权威指南[第六版] 第2章:词法结构

      语法结构规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分隔等规则.本章用很短的篇幅来介绍JavaScript的词法结构.   2.1.字符集   JavaScript程序是用Unic ...

  9. 2.词法结构-JavaScript权威指南笔记

    今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASC ...

  10. JavaScript语言核心之词法结构

    编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分割的等规则. 1.1字符集 JavaScript ...

随机推荐

  1. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html Zookeeper 分布式服务框架是 Apa ...

  2. TortoiseSVN菜单项功能说明

    TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...

  3. cdh环境下,spark streaming与flume的集成问题总结

    文章发自:http://www.cnblogs.com/hark0623/p/4170156.html  转发请注明 如何做集成,其实特别简单,网上其实就是教程. http://blog.csdn.n ...

  4. hdu1106 排序水题

    Problem Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整 ...

  5. 解决eclipse报PermGen space内存溢出异常的问题

    异常问题如下所示: 1.点击Eclipse->Window->Preferences,如下所示: 2.点击Server->Runtime Environments,选择Apache ...

  6. MFC 重载退出(窗口顶上最右边的x按钮)

    其实可以在*Dlg.cpp中的BEGIN_MESSAGE_MAP中对IDCANCEL和自定义函数进行匹配就可以了. 如: 自定义的退出函数是OnClose(),则在BEGIN_MESSAGE_MAP中 ...

  7. Azkaban 2.5.0 搭建

    一.前言 最近试着参照官方文档搭建 Azkaban,发现文档很多地方有坑,所以在此记录一下. 二.环境及软件 安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: ...

  8. 【原】文本图片自适应高度小bug以及解决办法

    自定义cell的文本图片自适应高度代码,如果存在自定义的cell赋值封装,就必须将自适应高度代码写在这个方法中

  9. mysql修改默认编码为UTF8

    Linux下一般是 /etc/my.cnf --在 [mysqld] 标签下加上三行default-character-set = utf8character_set_server = utf8 -- ...

  10. 微信客户端自带的Js Api:WeixinJSBridge

    <!DOCTYPE html> <html> <head> <title>微信WeixinJSBridge API</title> < ...