1. node和浏览器中的js的区别
- node中使用ECMAScript6语法
- 浏览器中的js包含:ECMAScript+DOM+BOM
- node中的js包含:ECMASCript6+模块系统(系统模块+第三方模块+自定义模块)
2.ECMAScript6语法基础
let关键词
(1)没有变量提升
(2)有块级作用域
一对大括号就是一个程序块,在大括号中声明的变量,出了大括号就不能使用了
在流程控制中使用let声明的变量,出了流程控制也不能使用了
(3)不能重复声明变量
const常量
一旦赋值就不能改变的量就是常量,常量也有块级作用域
var,let ,const区别
(1)var和let都能声明变量,但是let更严谨一些,在es6之后都推荐使用let来声明变量。
(2)let的特殊点: 不能提升变量(保证程序的逻辑通畅)、 有块级作用域(避免变量交叉污染)、不能重复声明保证变量的唯一性
(3)const用来声明常量,常量是不能改变的量,一旦声明就不能改变。常量也有块级作用域
5. 解构赋值
解构赋值就是将对象或者数组中的数据拆解出来分别赋值给某几个变量
(1)正常解构方式
(2)别名
(3)变量数量与对象单元不对等, 按key正常赋值,如果没有则赋值为 undefined
①变量名少,则正常赋值
②变量名多,则赋值为undefined
③数组中的不对等,使用…方式
如果使用…方式,多出来的值会以数组形式保存在最后一个变量中
字符串扩展
(1)模板字符串
① 使用反引号来声明的字符串就是模板字符串 (Esc下面的键)
②使用反引号定义字符串时,字符串中可以可以忽略单双引号的嵌套问题
③在模板字符串中要输出变量可以使用 ${变量名} 的形式
在模板字符串中不需要考虑单双引号嵌套的问题
(2)includes()
includes()判断一个字符串是否存在于一个字符串中
str.includes(char):判断char是否存在str中,存在则返回true,不存在则返回false
(3) startsWith() 和 endsWith()
startsWith(): 判断一个字符串是否以另一个字符串开始
endsWith(): 判断一个字符串是否以另一个字符串结束
str.startsWith(char): 判断str是否以char开头,是则返回true,否返回false
str.endsWith(char): 判断str是否以char结尾,是则返回true,否返回false
(4)padStart() 和 padEnd()
- padStart(): 设置字符串总长度,如果长度不够则使用某个字符填充到字符串的开头
- padEnd(): 设置字符串总长度,如果长度不够则使用某个字符填充到字符串的结尾
数组扩展
(1)includes():判断一个值是否存在于一个数组中
(2)find:返回满足条件的第一个值
(3)findindex:返回满足条件的第一个值的下标
函数扩展
(1)形参默认值
声明函数时给形参设置默认值
(2)解构赋值和形参默认值配合使用
定义函数时,形参设置成对象形式,函数调用时,实参的key必须和参数名一致
//定义函数时参数使用解构赋值方式
function add ({x, y = 10}) {
console.log(x + y);
}
//传入实参是对象形式
//key必须和定义函数时指定的变量名一致
add({x:10});
add({x:10, y:15});
(3)rest参数,相当于arguments
箭头函数
(1)箭头函数的定义方式
- 箭头函数的用法和普通函数用法几乎一致
- 去掉 function
- () 和 {} 之间增加 =>
(2)箭头函数的特点 - 箭头函数不能作为构造函数
- 箭头函数没有arguments,要使用可变参数可以使用 rest 方式
- 箭头函数没有this对象,在箭头函数中的this指的函数外层的对象
- 如果函数体只有一句并且设置了返回值,则不需要使用大括号,不需要return
- 如果函数中只有一个参数,则不需要写小括号
①不能作为构造函数
②箭头函数没有arguments,要使用可变参数可以使用rest方式
③箭头函数没有this对象,在箭头函数中的this指的是函数外层的对象
④如果函数体只有一句并且设置了返回值,则不需要使用大括号,不需要return
⑤如果函数中只有一个参数,则不需要写小括号
定义对象 的简洁方式
在声明对象时,值的变量名和下标相同时,可以只写下标而不写值
系统模块
1.什么是系统模块
在安装Nodejs时一些模块自动被安装,这些模块大多由Nodejs官方维护,称这类模块为系统(核心)模块,如fs、path、url、http等。
模块被加载后才能使用,Nodejs提供了全局的函数 require 加载模块。
2.os模块
OS是node提供的一个系统模块,能够获取操作系统和硬件的一些信息
// 加载os模块
const os = require('os');
console.log(os);
console.log(os.cpus()); //cpus() 能够获取cpu信息
console.log(os.userInfo()); //userInfo() 能够获取当前用户信息
文件模块—fs
文件模块也是一个系统模块
首先使用 const fs = require(‘fs’); 来加载模块,并使用一个常量来接收。
- 文件读取—readFile
//readFile: 用来读取文件
fs.readFile(var1, var2, var3);
参数1: 要读取的文件路径
参数2: 配置项,主要用来配置字符集。可选参数。
如果不设置该参数,文件内容会以二进制形式返回
参数3: 读取成功后的回调函数,有两个参数
读取成功:
err: null
result: 文章内容,如果不设置参数2,则返回二进制数据。可以使用 toString() 方法将二进制数据
转为正常字符串
读取失败:
err: 错误对象
result: undefined
执行结果
err对象
执行结果
可以使用 readFile的参数2或者 data.toString() ,将二进制数据转为正常数据
- 文件的写入—writeFile
//writeFile: 用来向文件中写入内容
fs.writeFile(var1, var2, var3, var4);
参数1: 要写入的文件路径
参数2: 要写入文件的字符串
参数3: 配置项,设置写入的字符集
参数4: 写入完成的回调函数,有一个参数
写入成功: 错误对象
写入失败: null