开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
3.1 语法
ECMAScript 中一切都区分大小写(变量、函数名还是操作符)
标识符,就是变量、函数、属性或函数参数的名称。
标识符的组成:
- 第一个字符必须是一个字母、下划线(
_)或美元符号($); - 其余可以是字母、下划线、美元符号或数字。
- 关键字、保留字、
true、false和null不能作为标识符。
注释包括单行注释和多行注释。单行注释以两个斜杠字符开头(//),多行注释(/* 这是多行*/)。推荐使用单行注释
若要启用严格模式,在脚本开头加上一行:”use strict”
ECMAScript 中的语句以分号结尾。没有分号,有效但不推荐;
➕ 分号的好处:
- 有助于防止省略造成的问题;
- 有便于开发者通过删除空行来压缩代码(没有结尾的分号,只删除空行,会导致语法错误);
- 有助于在某些情况下的性能提升。
3.2 关键字与保留字
-
保留的关键字不能用作标识符或属性名。
-
ES6 规定的所有关键词如下⬇️: | break | do | in | typeof | | -------- | -------- | ---------- | ------ | | case | else | instanceof | var | | catch | export | new | void | | class | extends | return | while | | cosnt | finally | super | with | | continue | for | switch | yield | | debugger | function | this | | | default | if | throw | | | delete | import | try|
-
ES6 为将来保留的所有词汇⬇️:
- 始终保留:enum
- 严格模式下保留⬇️: | implements | package | public | | ---------- | --------- | ------ | | interface | protected | static | | let | private
- 模块代码中保留:await
3.3 变量
有 3 个关键字可以声明变量:var、const 和 let。
-
块级作用域:
let、const具有块级作用域,var不存在块级作用域。块级作用域解决了
ES5中的两个问题:- 内层变量可能覆盖外层变量
- 用来计数的循环变量泄漏为全局变量
-
变量提升:
var存在变量提升,let和const不存在变量提升;变量提升是在变量只能在声明之后使用,否则会报错。 -
给全局添加属性:
var声明的变量会添加为浏览器的全局对象window对象的属性,let和const不会。 -
重复声明:
var可以重复声明,会覆盖之前的声明。let和const不会。 -
暂时性死区:在使用声明变量
let、const执行之前不可用,声明之前的执行瞬间成为“暂时性死区”,var不存在暂时性死区。 -
初始值设置:
var和let可以不用设置初始值;const必须设置初始值。区别 var let const 是否有块级作用域 × ✔️ ✔️ 是否存在变量提升 ✔️ × × 是否添加全局属性 ✔️ × × 能否重复声明变量 ✔️ × × 是否存在暂时性死区 × ✔️ ✔️ 是否必须设置初始值 × × ✔️
不使用 var,const 优先,let 次之。let 和 const 有助于提升代码质量,const 声明可以让浏览器运行时强制保持不变。优先使用 const,会有修改,再使用 let。