###ES6新特征
ES6 ECMAScript6 7 8...
ES2015 ES2016 ES2017 ES2018
####第六套标准规范
- (1)块级作用域
let声明的变量不存在提升,不允许反复声明。
在块级作用域下使用let声明的变量是局部变量,不能被其它作用域访问
if、else、while、for...所有大括号中都是块级作用域。
练习:使用let声明变量,计算1~100之间所有整数的和。
- (2)函数增强
可以给形参设置默认值,如果调用函数的时候不提供实参,则自动使用默认值
function add(a,b,c=0){
console.log(a+b+c);
}
add(4,5);
(3)箭头函数
简化了匿名函数的写法,但不等价于匿名函数,两者有区别,后期JS高级后会说到。
sort( (a,b)=>{
return a-b;
} )
如果箭头函数的函数体中只有一行代码,并且是return形式的,则可以简化为 sort( (a,b)=>a-b )
练习: 使用函数表达式创建函数,其中匿名函数使用箭头函数;计算任意两个数字之间所有整数的和。
- (4)模板字符串
解决了字符串的拼接
这就是模板字符串,里边可以写任意的字符不需要拼接 ${js表达式}
练习:创建一个员工对象,包含有编号,姓名,性别(1/0),工资
打印出 编号:2 姓名:xxx 性别:男 工资:8199.00¥
2.Node.js概述
Node.js运行在服务器端的JS解释器,基于谷歌的V8引擎解释器,可以实现服务端操作,例如数据库操作,web服务器的创建。
- (1)对比JS和Node.js的区别
JS运行客户端浏览器,存在多款浏览器,代码有兼容性问题;Node.js运行在服务器端,只有一个解释器,代码不存在兼容性问题。
两者都有自定义对象和内置对象,不同的宿主对象。
JS用于浏览器端的交互效果,Node.js用于服务器端操作,例如数据库的操作,web服务器的创建等
- (2)官方网站
nodejs.org
nodejs.cn 中文镜像
- (3)执行方式
脚本模式
node c:/xampp/.../02.js 回车
交互模式
node 回车 进入交互模式
退出交互模式
两次ctrl+c 或者 .exit 回车
- (4)应用场景
属于I/O密集型,可以解决数万个并发连接,适合做基于社交网络的大规模web应用
3.全局对象
global
Node.js
在交互模式下创建的函数和声明的变量都是全局global下的,可以使用global访问;global.a global.fn()
在脚本模式下创建的函数和声明的变量都不是全局global下的,都是局部的 JS : window
在JS下创建的函数和声明的变量都是全局下的,可以使用全局对象window来访问; window.a window.fn()
4.console对象
console.log(1); //输出日志
console.info(2);//输出消息
console.warn(3);//输出警告
console.error(4);//输出错误
console.time() 开始计时
console.timeEnd() 结束计时
开始和结束计时打印的内容要保持一致。
练习:查看循环10000次,for,while,do-while的耗时情况
5.process对象
process表示进程的对象
process.arch 查看CPU架构
process.platform 查看当前的操作系统
process.version 查看当前nodejs版本号
process.env 查看当前环境变量有哪些
process.kill(编号) 结束指定编号的进程
6.Buffer对象
缓冲区:在内存中临时存储数据的区域,通常网络传输的数据都是在缓冲区。
创建Buffer
let buf=Buffer.alloc(5,'abcde');
转为字符串
buf.toString() String(buf)
7.模块
就是一个独立的功能体
在Node.js下规定,任意一个文件就是一个模块
分为自定义模块、核心模块、第三方模块
Node.js自动为每一个文件添加了一个构造函数(以下红色部分就是自动添加的)
(function (exports, require, module, __filename, __dirname) {
程序员自己写的代码
})
require: 是一个函数,用于引入另一个模块
exports: 是导出的对象,如果要导出内容,都是往这个对象中添加