《JS权威指南学习总结--第二章词法结构》
第二章词法结构
内容要点:
一.注释
1. //表示单行注释
2. /*这里是一段注释*/
3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/
二.直接量
所谓直接量,就是程序中直接使用的数据量,比如:
数字、小数、字符串文本、布尔值、正则表达式直接量
三.标识符和保留字
标识符作用:标识符就是一个名字,在JS中,标识符用来对变量和函数进行命名,或者用做JS代码中某些循环语句中的跳转位置的标记。
标识符命名规则:
1.必须以字母、下划线(_)或美元符($)开始。
2.后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便JS可以轻便区分开标识符和数字)。
3.出于可移植性和易于书写的考虑,通常只使用ASCII字母和数字来书写标识符。然而需要注意的是,JS允许标识符中出现Unicode字符全集中的字母和数字。由此,程序员也可以使用非英语语言或数学符号来书写标识符。
4.和其他语言一样,JS保留了一些标识符来为自己所用,这些“保留字”不能用做普通的标识符。
保留字:
以下就是ECMAScript的全部关键字(带*号上标的是第5 版新增的关键字):

以下是ECMA-262 第3 版定义的全部保留字:

第5 版把在非严格模式下运行时的保留字缩减为下列这些:

在严格模式下,第5 版还对以下保留字施加了限制:

注意, let 和yield 是第5 版新增的保留字;其他保留字都是第3 版定义的。为了最大程度地保证兼容性,建议大家将第3 版定义的保留字外加let 和yield 作为编程时的参考。
在实现ECMAScript 3 的JS 引擎中使用关键字作标识符,会导致"Identifier Expected" 错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。
第5 版对使用关键字和保留字的规则进行了少许修改。关键字和保留字虽然仍然不能作为标识符使用,但现在可以用作对象的属性名。一般来说,最好都不要使用关键字和保留字作为标识符和属性名,以便与将来的 ECMAScript 版本兼容。
严格模式下,同样对argument、eval标识符的使用做了严格限制,它们并不完全是保留字,但不能用做变量名、函数名或参数名。
js的具体实现可能定义独有的全局变量和函数,每一种特定的JS运行环境(客户端、服务器端等)都有自己的一个全局属性列表,这一点是需要牢记的
四.可选的分号
和其他许多编程语言一样,JS使用分号(; 英文)将语句分隔开。这对增强代码的可读性和整洁性是非常重要的。
缺少分隔符:一条语句的结束就成了下一条语句的开始。
在JS中,如果语句各种独占一行,通常可以省略语句之间的分号(程序结尾或右花括号"}"之前的分号也可以省略)。
关于JS中可选分号的问题有几个细节需要注意:
1.两条语句用两行书写,第一个分号可以省略掉的:
a=3;
b=4;
如果按照一行 a=3;b=4; 格式书写,第一个分号不能省略掉。
2.JS并不是在所有的换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,JS才会填补分号。
换句话说:如果当前语句和随后的语句的非空格字符不能当成一个整体来解析的话,JS就在当前语句行结束处填补分号。
var a
a
=
3
console.log(a)
JS将其解析为:
var a;a=3;console.log(a);
3.两种特殊的情况:
(1)在涉及到return、break和continue语句的场景中。如果这三个关键字后紧跟着换行,JS则会在换行处填补分号。
return
true
JS会解析成
return;true;
(2)在涉及到"++"和"--"运算符的时候,这些运算符可以作为表达式的前缀,也可以当作表达式的后缀。如果将其用作后缀表达式,它应该和表达式在同一行,否则,行尾将填补分号,同时"++","--"
将会作为下一行代码的前缀操作符并与之一起解析,
x
++
y
JS将解析成
x;++y;
《JS权威指南学习总结--第二章词法结构》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- NFV 利器 FD.io VPP
在VPP中,报文以向量批处理的形式在节点之间以流水线的方式处理,可以更加高效的利用CPU的i-cache,节点可以动态生成并加入到转发图中,节点分为多种类型,如VLIB_NODE_TYPE_INPUT ...
- 在java中json的使用案例
import java.text.ParseException; import org.json.JSONArray; import org.json.JSONObject; public class ...
- mysql修改密码Your password does not satisfy the current policy requirements
出现这个问题的原因是:密码过于简单.刚安装的mysql的密码默认强度是最高的,如果想要设置简单的密码就要修改validate_password_policy的值, validate_password_ ...
- WI-FI: connection through CLI
First, ensure that the computer/sbc has WI-FI parts. install wpa_supplicant, edit /etc/wpa_supplican ...
- Android WebView中显示一张或多张图片
最近需要在平板中显示多张图片,调查了下,决定用WebView(说实话,我还不清楚有没有其他android控件能够显示多张图片的.....), 主要是用HTML的img来显示多张图片. google百度 ...
- python 小程序(1)
这是在一个文件夹下将符合条件的文件中,第一列是相同的,对每个文件中第二列的数求和,输出为一个txt文件,文件内容格式为:第一列的每个数对应[这个所有符合条件的文件中第一列这个数对应的第二个数的]求和 ...
- Javascript获取不重复的随机数值
/** * 获取不重复随机数 * @param integer start 随机数最小值 * @param integer end 随机数最大值 * @param integer size 随机数获取 ...
- 转:Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念
Cocoa 是在Mac OS X系统上原生的一个编译环境.他包含两个框架,其实就是一系列的类库,Foundation和AppKit. 在你的iPhone等掌上设备上,使用的则是他的一个子类 - Coc ...
- Android应用程序组件介绍
应用程序组件是Android应用程序的基本构建单元.每个组件是系统进入你的应用程序的不同入口点.不是所有的组件对于用户都是实际上的入口点,有些是互相依赖的,但是每个组件都有特定的作用——每个都是唯一的 ...
- JavaScript的DOM(文档对象)基础语法总结2
1.getAttribute()方法,通过元素节点的属性名称获取属性的值. //语法 elementNode.getAttribute(name) //element(元素);Node(节点) //注 ...