ES6开篇

2021-10-9 JavaScriptES6

ES6语法,变量,数据类型

# 语法篇

  1. 标识符
    • 标识符是指变量、函数、属性或函数参数的名称
    • 标识符中字母可以是扩展ASCII和Unicode的字母字符
  2. 严格模式
    • 在脚本或者函数开头写入 "use strict"; 采用这种语法是为了不破坏ES3语法
    • "use strict"是个预处理命令,不同于JavaScript解析和执行模型,会对一些不规范的写法进行处理,并对不安全活动抛出错误
    • 如给未声明变量赋值、定义名为eval和arguments的变量或对未声明变量调用delete在严格模式下都是不允许的
  3. 当采用无分号的代码风格时,要注意当一行代码以**( [ `**开头时,要在前面补一个分号以避免一些语法解析错误

# 变量篇

  1. const和let只能在ES6+使用
  2. let不能依赖条件声明模式,也就是说无法通过条件判断前面是否定义了同名变量,因为let是块作用域
  3. const声明变量的同时必须初始化
  4. let可用于for、for-in和for-of,使用let声明迭代变量时,JavaScript引擎会在后台为每个迭代循环声明一个新的迭代变量
  5. const可以用于for-in和for-of,但不能用于for,因为for循环每次执行完代码块后会进行+1操作,而const的值不可更改会报错
  6. 在let声明之前的执行瞬间被称为“暂时性死区”,在此阶段引用任何后面才声明的变量会抛出ReferenceError,严格来讲,let在JavaScript运行时中也会被提升,但由于“暂时性死区”的缘故,实际上不能在声明之前使用let变量
  7. 由于const声明按时变量的值是单一类型且不可修改,JavaScript运行时编译器可以将其所有实例都替换成实际的值,而不会通过查询表进行变量查找,谷歌的V8引擎就执行这种优化

# 数据类型篇

  1. ECMAScript一共有七种数据类型
    • 简单数据类型:undefined、null、Boolean、Number、String和Symbol
    • 复杂数据类型:Object
  2. typeof是一个操作数而不是函数,加不加参数都可以
  3. 可以通过typeof来区分对象和函数
  4. undefined是从null派生出来的,ES3之前不存在这个字面值,主要用来正式明确null和未初始化变量的区别
  5. 对未声明的变量调用typeof,返回的结果还是undefined
  6. undefined不需要显式赋值,但如果变量要保存对象,而当时又没有对象可保存,就要用null来填充该变量

温故而知新...