Node.js基础
JavaScript基本语法
1. JavaScript版本
ES6是目前的主流版本,Node.js自6.0版本开始全面支持ES6。
> ECMA,中文名称为“欧洲计算机制造商协会”
> ES6 的版本变动内容最多,具有里程碑意义;
> ES6 加入许多新的语法特性,编程实现更简单、高效;
ES6 是前端发展趋势,就业必备技能;
2. JavaScript运行环境
>Node.js REPL交互式运行环境
>浏览器控制台
3. JavaScript语句与注释
4. 变量
let
let 关键字用来声明变量,使用 let 声明的变量有几个特点:
- 不允许重复声明;
- 块级作用域(局部变量);
- 不存在变量提升;变量创建之前使用(比如输出:输出的是默认值),let不存在,var存在;
- 不影响作用域链;
const
const 关键字用来声明常量,const 声明有以下特点:
- 声明必须赋初始值;
- 标识符一般为大写(习惯);
- 不允许重复声明;
- 值不允许修改;(对数组元素的修改和对对象内部的修改是可以的(数组和对象存的是引用地址);
- 块儿级作用域(局部变量);
const应用场景:
对数组元素的修改和对对象内部的修改是可以的;
声明对象类型使用 const,非对象类型声明选择 let;
5. 数据类型
Symbol
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值 。
Symbol的特点:
Symbol 的值是唯一的,用来解决命名冲突的问题;
Symbol 值不能与其他数据进行运算;
Symbol 定义的对象属性不能使用for…in循环遍历
Set集合
ES6 提供了新的数据结构 Set(集合)。它类似于数组,但成员的值都是唯一的,可以使用『扩展运算符』和『for…of…』进行遍历。
size 返回集合的元素个数;
add 增加一个新元素,返回当前集合;
delete 删除元素,返回 boolean 值;
has 检测集合中是否包含某个元素,返回 boolean 值;
clear 清空集合,返回 undefined;
Map集合
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合。但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
size 返回 Map 的元素个数;
set 增加一个新元素,返回当前 Map;
get 返回键名对象的键值;
has 检测 Map 中是否包含某个元素,返回 boolean 值;
clear 清空集合,返回 undefined;
CLASS 类
ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板。通过 class 关键字,可以定义类。基本上,ES6 的 class 可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的 class 写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。
class 声明类;
constructor 定义构造函数初始化;
extends 继承父类;
super 调用父级构造方法;
static 定义静态方法和属性;
父类方法可以重写;
变量和对象的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值;
应用场景:频繁使用对象方法、数组元素,就可以使用解构赋值形式;
模板字符串
模板字符串(template string)是增强版的字符串,用反引号(`)标识,特点:
字符串中可以出现换行符;
可以使用 ${xxx} 形式引用变量;
简化对象和函数写法
ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。
这样的书写更加简洁;
箭头函数
ES6允许使用箭头(=>)定义函数,箭头函数提供了一种更加简洁的函数书写方式,箭头函数多用于匿名函数的定义;
1.如果形参只有一个,则小括号可以省略;
2. 函数体如果只有一条语句,则花括号可以省略,函数的返回值为该条语句的执行结果;
3. 箭头函数 this 指向声明时所在作用域下 this 的值;
4. 箭头函数不能作为构造函数实例化;
5. 不能使用 arguments;
箭头函数的特性
- 箭头函数的this是静态的,始终指向函数声明时所在作用域下的this的值;
- 不能作为构造实例化对象;
- 不能使用 arguments 变量;