1.ES6
(1)块级作用域
let a = 1;
let声明的变量不存在提升,在同一个作用域下,不允许重复声明同一个变量
大括号之间的语句块就是一个块级作用域,例如:if、else、while、do-while、for... 在块级作用域下,let和const声明的都是局部的,无法被块级作用域以外访问到。
var let const三个区别 var声明的变量存在提升,在同一个作用域下可以重复声明同一个变量 let声明的变量不存在提升,在同一个作用域下不允许重复声明同一个变量,存在块级作用域,即使在全局作用域下let声明的变量也不是全局的 const 声明的时候必须赋值,不允许重新赋值,存在块级作用域,即使在全局作用域下const声明的常量也不是全局的 |
练习:计算1~100之间所有整数的和,使用let声明变量
(2)参数增强
可以给函数的参数设置默认值
function fn(a,b,c=0){ //c = c || 0; //es6之前的默认值设置 } fn(10000,2000) //没有出现的实参就会使用默认值 |
(3)箭头函数
()=>{ }
简化了匿名函数的写法,不等价于匿名函数
sort( (a,b)=>{ return a - b; } ) |
如果箭头函数的函数体中只有一行代码并且是return形式,可以简化为
sort( (a,b)=>a-b );
练习:使用函数表达式创建函数,将之前的匿名函数使用箭头函数代替,计算任意3个数字的平均值并返回结果。
(4)模板字符串
解决了字符串的拼接问题
` 模板字符串 ${JS表达式} `
练习:声明变量保存一条员工的数据,格式为对象,包含的属性有编号,姓名,性别(1/0),工资;最后打印出以下格式
编号:x
姓名:xx
性别:男/女
工资:xxxx.00 元
1.Node.js概述
Node.js是运行在服务器端的JS解释器,基于谷歌的V8引擎。
(1)对比JS
JS运行在客户端浏览器,存在多种JS解释器,存在代码兼容性问题;Node.js只有V8引擎一种解释器,不存在代码兼容性问题
JS和Node.js都有共同的ES(内置)对象和自定义对象,不同的宿主对象
JS用于开发浏览器端的交互效果,Node.js用于服务器端开发,例如数据库的访问,其它服务器的调用....
(2)网址
www.nodejs.org 官网
www.nodejs.cn 中文镜像
(3)使用Node.js
脚本模式
node 拖拽脚本文件 回车
交互模式
node 回车 进入交互模式
两次ctrl+c 或者 ctrl+d
(4)特点
Node.js属于单线程运行逻辑,支持数万个并发连接,适合做基于社交网络的大规模WEB应用,不适合做CPU密集型的操作。
2.全局对象
(1)global
检测一个变量或者函数是否为全局的
交互模式属于全局作用域,创建的函数和声明的变量是全局的
每个脚本文件都是在一个作用域下,里边的函数和变量都是局部的,不存在全局污染
JS下的global叫做window
练习:编写脚本03_global.js,在脚本文件下声明变量、创建函数,然后通过global检测是否为全局。
练习:创建04_window.js和04.html,把js嵌入html中,声明变量、创建函数,然后通过window检测是否为全局
(2)console
console.log(1) //日志
console.info(2) //消息
console.warn(3) //警告
console.error(4) //错误
console.time() 开始计时
console.timeEnd() 结束计时
开始计时和结束计时的参数要保持一致
练习:分别查看for、while、do-while三种循环分别循环100000次的耗时。
(3)process
进程:计算机让的软件运行都是代表相应的进程
process.arch 查看当前CPU架构
process.platform 查看当前的操作系统
process.version 查看当前Node.js版本
process.pid 查看当前Node.js进程编号
process.kill() 结束指定编号的进程
(4)Buffer
缓冲器:在内存临时存储数据的区域,常用于保存网络传输时的资源
let buf = Buffer.alloc(5,'abcde'); //创建Buffer,大小为5个字节
buf.toString() //将Buffer数据转为字符串
3.定时器
一次性定时器
开启 var timer = setTimeout( 回调函数, 间隔时间 ) 当间隔时间到了,调用一次回调函数 |
清除 clearTimeout(timer) |
4.模块
是一个独立的功能体,模块可以被其它的模块引入,也可以引入其它的模块
require() 用于引入其它的模块
module.exports 是一个空对象,用于存放导出的内容
课后任务
(1)复习今天内容,整理思维导图
(2)练习
创建主模块(main.js)和功能模块(circle.js),在功能模块下导出两个函数,传递参数半径,分别返回周长和面积;在主模块下引入成功后,调用这两个函数
(3)预习nodejs第2天内容,异步