💙《JavaScript高级程序设计》 | 语言基础(上篇)

125 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

3.1 语法

ECMAScript 中一切都区分大小写(变量、函数名还是操作符)

标识符,就是变量、函数、属性或函数参数的名称。

标识符的组成:

  • 第一个字符必须是一个字母、下划线(_)或美元符号($);
  • 其余可以是字母、下划线、美元符号或数字。
  • 关键字、保留字、truefalsenull 不能作为标识符。

注释包括单行注释和多行注释。单行注释以两个斜杠字符开头(//),多行注释(/* 这是多行*/)。推荐使用单行注释

若要启用严格模式,在脚本开头加上一行:”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

  1. 块级作用域letconst 具有块级作用域,var 不存在块级作用域。

    块级作用域解决了 ES5 中的两个问题:

    • 内层变量可能覆盖外层变量
    • 用来计数的循环变量泄漏为全局变量
  2. 变量提升var 存在变量提升,letconst 不存在变量提升;变量提升是在变量只能在声明之后使用,否则会报错。

  3. 给全局添加属性var 声明的变量会添加为浏览器的全局对象 window 对象的属性,letconst 不会。

  4. 重复声明var 可以重复声明,会覆盖之前的声明。letconst 不会。

  5. 暂时性死区:在使用声明变量 letconst 执行之前不可用,声明之前的执行瞬间成为“暂时性死区”,var 不存在暂时性死区。

  6. 初始值设置varlet 可以不用设置初始值;const 必须设置初始值。

    区别varletconst
    是否有块级作用域×✔️✔️
    是否存在变量提升✔️××
    是否添加全局属性✔️××
    能否重复声明变量✔️××
    是否存在暂时性死区×✔️✔️
    是否必须设置初始值××✔️

不使用 var,const 优先,let 次之。let 和 const 有助于提升代码质量,const 声明可以让浏览器运行时强制保持不变。优先使用 const,会有修改,再使用 let。