JavaScript:词法结构
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:词法结构的更多相关文章
- 第二章:Javascript词法结构
编程语言的词法结构是一套基础性的规则,用来描述你如何编写这门语言.作为语法的基础,它规定了变量名是怎么样的,如何写注释,以及语句之间是如何区分的.本节用很短的篇幅来介绍javascript的词法结构. ...
- javascript 词法结构小结
作为一名前端程序员,自然学习了一些框架,但是学的越多越发现自己基础的不足,于是想系统的学习一下js基础,然后把它记录下来. 如其他编程语言一样,词法结构是一门语言的基础,它规定了诸如如何给变量起名字. ...
- JavaScript权威设计--JavaScript词法结构(简要学习笔记二)
1.字符集 JavaScript是用Unicode字符集编写的 2.区分大小写 html不区分大小写,xhtml区分大小写 如:html中onclick可以写成Onclick 但是js中必须写成onc ...
- 《JavaScript权威指南》第六版阅读笔记(二):JavaScript词法结构
JavaScript使用Unicode字符集.ECMAScript3要求JS的实现必须支持Unicode 2.1及后续版本,ECMAScript 5要求JS的实现支持Unicode 3及后续版本. J ...
- 第一章javascript词法结构笔记摘要
语法介绍 javascript最流行的脚本语言,用于web和HTML,服务器.pc.移动端 轻量级语言,可以插入HTML页面,由浏览器按编写顺序执行 一.字符集 用Unicode字符集编写,是ASCI ...
- javascript基础语法——词法结构
× 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...
- Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...
- Note | javascript权威指南[第六版] 第2章:词法结构
语法结构规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分隔等规则.本章用很短的篇幅来介绍JavaScript的词法结构. 2.1.字符集 JavaScript程序是用Unic ...
- 2.词法结构-JavaScript权威指南笔记
今天是第二章.所谓词法结构(lexical structure),就是写代码中最基本的东西,变量命名,注释,语句分隔等,这是抄书抄的... 1.字符集,必须是Unicode,反正Unicode是ASC ...
- JavaScript语言核心之词法结构
编程语言的词法结构是一套基础性规则,用来描述如何使用这门语言来编写程序.作为语法的基础,它规定了诸如变量名是什么样的.怎么写注释,以及程序语句之间如何分割的等规则. 1.1字符集 JavaScript ...
随机推荐
- JAVA多线程实现的四种方式
Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Cal ...
- EventBus的使用,数据传递
通常情况下安卓下数据的传递有下面几种方法: 1.通过intent传递,包括显式意图和隐式意图,广播(Broadcast)和服务都能通过Intent传递 传递的数据类型包括8大基本数据类型 实现P ...
- 第二篇:JMeter实现接口/性能自动化(JMeter/Ant/Jenkins)
主要是对HTML报告的优化 如果按JMeter默认设置,生成报告如下:
- 【CLR in c#】事件
1.事件模型建立在委托的基础上. 2,定义事件编译器会做三个动作,第一个构造具有委托类型的字段,事件发生时会通知这个列表中的委托. 第二个构造的是一个添加关注的方法+=. 第三个构造是一个注销事件关 ...
- DAY7L2【C001】
出自附中练习场[难度C]————————————————————————————————————————————————————————————— [试题描述]有 N 个任务, 每个任务最多只能完成一 ...
- 关于__IPHONE_OS_VERSION_MAX_ALLOWED和__IPHONE_OS_VERSION_MIN_ALLOWED的用法
简单来说, 这些编译期常量, 对运行时的环境判断完全无效, 它告诉编译器用哪一段代码来进行编译, 那那段代码里, 你仍然可以写运行到目标机器里会崩溃的代码, 从stackoverflow里拷两段示例代 ...
- iOS __strong __weak @Strongify @Weakify
@Strongify,@Weakify主要是在block中使用. 因为block一般都在对象内部声明.. 如果在block内部使用了当前对象的属性,就会造成循环引用(block拥有当前对象的地址,而当 ...
- HTML图片元素(标记)
<html> <head> <title>第一个网页</title> </head> <body> ************** ...
- apache htpasswd.exe创建密码
一.使用apache htpasswd.exe创建密码文件,命令请看PHP推荐教程:apache htpasswd命令用法详解 apache htpasswd命令用法实例 1.如何利用htpasswd ...
- BZOJ3654 : 图样图森破
考虑枚举回文中心,然后向两边扩展,当匹配到当前串的边界的时候,枚举下一个串接上. 这个过程可以通过记忆化搜索来完成,设: $f[i][0]$表示对于$i$这个位置,$[i,串结尾]$等待匹配的最长回文 ...