node.js知识点
一、定时器
setTimeout:定时执行,设置一个事件,等待事件到达的时候只执行一次,但是执行以后定时器还在,只是没有运行。
setIntevral:循环执行,设置一个时间间隔,每个一段时间都会执行一次这个方法,直到这个定时器被销毁
// // 案例:
// setTimeout(function(){(123)
// console.log(123);
// // },2000)
// setInterval(function()(
// console.log( 'abc');
// },2000)
//1.对以下代码的描述中,正确的是(B)
//A.回调函数会在延迟2s后执行一次
//B.回调阿含糊会以2s为间隔重复执行
//C.回调函数会在延迟2mins后执行一次
//D.回调函数会重复执行2000次
// 2.执行下面的代码,结果的输出顺序是 (1,3,2)
console.log(1);
setTimeout(function(){
console.log(2);
},0)
console.log(3);
// 解析: setTimeout指定的代码,必须等到本次执行的所有同步代码都执行完,才会执行
二、变量
知识点:
变量的名称须遵循如下3条规则
1.首字母必须是字母(大小写均可) 、下划线(_),或者美元符号($)(数字开头,非法.)
2.余下的字符可以是下划线、美元符号、任意字母或者数字字符。
3.变量名不能是关键字(keyword) 或者保留字。
4.驼峰命名 myName
// 题目:
//以下可以作为变量名使用的是 ( B )
//A.9name
// B.$strick9
// C.p wstrick
// D.delete(关键字)
三、字符串
知识点:
1.判断一个字符在不在某个字符串里面
// let str =蜜雪冰城甜蜜蜜!
// let index1 = str.index0f('甜蜜蜜')
// console.log(index1); //4
2.截取字符串 (第一个参数: 从哪个下标开始截取;第二个参数:截取的长度)
// let str1 = str.substr(4,2)
// console.log(str1);
3.修改字符串 (第一个参数: 要修改的字符串;第二个参数: 修改后的字符串)
// let str2 = str.replace('蜜雪冰城',奈雪的茶')
// console.log(str2);
4.分割字符串
a.直接调用不传任何值,会直接将字符串转化成数组
// let str1 = 'i love you'
// console.log(str1.split()); //['i love you']
b.如果已不存在的字符串(或者正则匹配不到的字符串) 进行分割,也会直接将字符串转为数组。
// let str2 = i love you'
// console.log(str2.split('M')); //['i love you']
c.按照空格字符串 (·)的形式进行分割,每个字符都分割。
// let str3 = 'i love you!// console.log(str3.split(i')); //['i'.'', 'o' , 'v', 'e',' '.x','k']// d.传入并原数组有分隔符的情况下,找到分隔符,将其从字符串删除,并将字符串数组返回,// let str4 = 'i love cxk'
// console.log(str4.split(' ')); //['i', love', 'you']
5.大小写转换
// console.log('ABCDEFG'.toLowerCase()); //abcdefg
// console.log('abcdefg' .toUpperCase()); //ABCDEFG
四、数组
// let array = ['wyf']
// console.log(array);
知识点:
1.数组名push(元素) 添加元素到数组末尾
// array.push(柯震东')
// console.log(array);
2.数组名.shift() 删除第一个元素
// array.shift(),
//console.log(array);
3.数组转化为字符串
// let a = ['1','2','3']// let b = a.join('')
// console.log(a); //['1',2','3']
// console.log(b); // 1234
// console.log(typeof(b)); // srting
// 题目:
// 1.下列选项不是Array对象 (即数组) 的方法是 ( C )
// A.push()
// B.shift()
// C.split()
// D.join()
// 2.执行下面的代码,在控制台输出的Length属性为(5)
// var arr = []
// arr[3] = 3// arr.push(4)
// console.log(arr.length);
//3.执行下面的代码,在控制台输出的Length属性为( 5 )
// var arr = [ ];
// arr[4] = 3;
// console.log(arr.length);
五.数组方法
知识点:
1.map:利用某种规则映射得到一个新数组。(遍历每一个元素,并对每一个元素做相应处理,返回一个新数组)
回调函数执行次数等于数组长度,map函数返回的新数组长度等于原数组长度 ,回调函数一定要return
注意点:
// a.回调函数执行次数 == 数组长度(数组中有几个元素,回调函数就会执行几次)// b.map函数返回的新数组长度 == 原数组长度
// c.回调函数中一定要return,返回的是当前遍历的元素值
// (如果不return,新数组中的每一个元素都变成了undefined)
语法: (元素,下标) => {return 新元素]
let arr = [23,31,60,88,108,206];
// (1)需求: 数组中每一个元素+1
let arr1 = arr.map((value,index) => {
return value + 1; //让每一个元素的值+1
})
console.log(arr1); //[24,32,61,89,109,207]
1.filter
// 1.filter应用场景: 用于筛选数组中满足条件的元素,返回筛选后的新数组// 例: 找出数组中的偶数;求数组中大于10的所有元素。
语法:
// a.数组.filter(function(value,index,arr){
// return
// 筛选条件
// })
注意点:
// a.回调函数执行次数 == 数组长度
// b.filter函数返回的新数组长度 ! = 原数组长度
let arr = [3,31,60,-88,90,-108,260]
// (1)需求: 求数组中大于10的所有元素
let nArr = arr.filter(function(value){
// 筛选条件
return value > 10
})
// nArr里保存的是所有满足条件的元素
console.log(nArr); //[31,60,90,260]
2.for Each
forEach和map方法有什么区别?
forEach()方法不会返回执行结果,也就是说forEach()方法会修改原来的数组,但是没有返回值。
map()方法得到一个新的数组,是map方法修改数组后返回回来的新数组。
forEach应用场景: 用于遍历数组,相当于for循环另一种写法
语法: 数组.forEach( function(value,index,arr)[ // 算法 })
forEach必须提供一个参数
// a.value:每次遍历到的数组元素
// b.index:每次遍历到的数组的下标
// c.arr:数组
// d.forEach
let arr = [23,31,60,88,90,108,260];
// 需求1:对数组进行累加
let sum = 0
arr.forEach(function(value){
sum += value
})
console.log(sum); //660
// 3.注意点:
// a.回调函数执行次数 == 数组长度(数组中有多少元素,回调函数就会执行几次)
// b.forEach函数没有返回值
// c.回调函数不需要return(就算手动ruturn,也不会结束循环)
3.some
some应用场景: 用于判断数组中是否存在满足条件的元素
注意点:
// a.回调函数执行次数 != 数组长度
// b.some函数返回一个布尔类型值
// c.回调函数返回布尔类型值用于结束遍历return true; 遍历结束,且some函数返回值为true。return false; 遍历继续,且some函数返回值为true
// (1)需求: 判断数组中有没有负数
let arr = [23,31,60,88,0,90,108,260]
let arr1 = arr.some((item,index) =>{
return item <
});
console.log(arr1);
4.every
every应用场景: 用于判断数组中是否所有元素都满足条件
注意点:
// a.every函数返回一个布尔类型值
// 需求: 判断数组中没有负数
let arr = [23,31,60,88,-50,90,108,260];
let arrl = arr.every((item) => {
return item > 0 ;
);
console.log(arr1); //false
5.findIndex
数组findIndex方法:
// a.作用: 获取符合条件的第一个元素位置(下标)。
// b.语法: arr.findIndex((item,index) => (return true/false})//返回值: 符合则返回元素下标,不符合则返回-1。//c.应用场景: 适合于数组中元素为对象类型,比传统for循环要高效
let arr = [
( name:'张三',age:20 },
[ name:'李四',age:30 },
( name:'王五',age:25 },
{ name:'赵六',age:33 },
( name:'小七',age:10 ],
]
// 数组findIndex方法: 获取符合条件的第一个元素位置(下标)
// 需求: 查找arr1中第一个未成年在什么位置
let res = arr.findIndex((item,index) => {
return item.age < 18;
})
console.log(res); //4
6.reduce
数组reduce方法:
// a.作用: 遍历数组元素,为每个数组执行一次回调函数
// b.语法: arr.reduce( (sum,value) =>[ return sum + value })
/返回值: 最终sum值
// c.应用场景: 数组求和/平均数/最大值/最小值
// d.注意点: 最好给一个初始值,避免空数组报错
let arr1 = [20,55,80,70,92,35];
// sum:初始值,默认为数组第一个元素。
// value: 数组的每一个元素,默认为数组第二个元素。
let res1 = arr1.reduce((sum,value) => ! {
//这里必须要return,相当于把本次计算的结果赋值给下一次的sum: sum = sum + valuereturn sum + value;
return sum + value;
})
console.log(res1); //352
题目:
// 1.以下代码的打印结果是 (false)
// let arr = [23,31,60,88,-50,90,108];
// let arr1 = arr.every((item) => {
// return item > 0;
// 3);
// console.log(arr1);
// 2.以下代码的打印结果是 ( 352 )
// let arr1 = [20,55,80,70,92,35]
// let res1 = arr1.reduce((sum,value) => {
// return sum + value
// })
// console.log(res1);
五.请求方式
知识点:
GET请求: 可以理解为“取”的意思。用来获取数据,不对服务器的数据做任何的修改、新增、删除等操作。
POST请求: 可以理解为“贴”的意思。数据发送到服务器以创建或更新资源,侧重于更新数据PUT请求: 可以理解为“放”的意思。数据发送到服务器以创建或更新资源,侧重于创建数据。
PUT请求:可以理解为“放”的意思,数据发送到服务器创建或更新资源,侧重于创建数据。
DELETE请求:“删除”。删除指定的资源。
HEAD请求: HEAD方法与GET方法相同,也是从服务器获取信息。但服务器不会返回请求的实体数据,只会传回相应头可以用在很多并不真正需要资源的场合,避免传输body数据的浪费。
比如,想要检查一个文件是否存在,只要发个信息HEAD请求就可以了,没有必要用GET把整个文件都取下来PATCH(布丁)请求: 用于上传数据并更新“部分”资源。
题目:
1.在HTTP中,不可用的请求方法是 ( A )
A.RETURN
B.POST
C.HEAD
D.DELETE
2.表示从服务器获取资源的请求方式是 ( A )
A.GET
B.POST
C.PUT
D.PATCH
六、AJAX
<body>
<!-- AJAX发送post请求
1.创建请求对象,实例化一个ajax对象
2.调用open方法,设置请求方式和地址
3.设置请求头
(固定语法:xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
4.设置请求成功后的回调函数
5.使用send() 方法去发生ajax请求
-->
<!-- get和post请求传递参数的写法是不一样的
在get请求中,把参数直接拼接在url地址后,不安全 -->
<script>
// 1.创建请求对象,实例化一个ajax对象
let xhr = new XMLHttpRequest();
// 2.调用open方法,设置请求方式和地址
xhr.open('post','https://autumnfish.cn/api/user/register')
// 3.设置请求头
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
// 4.设置请求成功后的回调函数
xhr.onload = function(){
console.log(xhr.response);
}
// 5.使用send() 方法去发生ajax请求
xhr.send('username=lyh')
</script>
</body>
题目:
对AJAX的理解? 实现一个AJAX请求?
// DAJAX全称(Async Javascript and XML),即异步的JavaScript 和XML
//是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,与服多
// @let xhr =new XMLHtpRequest;
//xhr.open(“请求方式’,“请求地址’);
//xhr.οnlοad=function()[请求成功后的回调函数};
//..xhr.send()
七、HTTP状态码
知识点:
1开头的状态码 (信息类)
// 100,接收的请求正在处理
// 2开头的状态码 (成功类)
// 200,服务器已成功处理了请求。
// 3开头的状态码 (重定向)
// 301,永久性重定向。302,临时重定向
// 4开头的状态码 (客户端错误)
// 400,错误请求,服务器不理解请求的语法。403,服务器拒绝请求。
// 5开头的状态码 (服务器错误)
// 500,服务器内部错误,无法完成请求。503,服务器停机维护,无法处理请求
// 题目:
// 1.表示请求发送成功的状态码是( A )
// A.200
// B.300
// C.400
// D.500
// 2.HTTP应答中的500错误指的是 ( A )
// A.服务器内部错误
// B.文件未找到
// C.客户端网络不通
// D.没有访问权限
// 3.在HTTP中,总共有5类状态码,请简单介绍一下这5类状态码
// (D1XX: 信息,服务器收到请求,需要请求者继续执行操作。
// 22XX: 成功,操作被成功接收并处理。常见的是200,代表请求成功。
// 33XX:重定向,表示需要进一步的操作以完成请求。
// 44XX:客户端错误,请求包含语法错误或无法完成请求。
// 55XX:服务端错误,服务器在处理请求的过程中发生了错误。
八、npm包管理
// 知识点:
// npm install 模块名: 本地安装。安装到当前项目的node_modules目录下,只有当前项目可以用此依赖.
// npm instal[ 模块名-g:全局安装。电脑上的任何项目都可以使用这个依赖。
// npm instal[ 模块名-save: 安装到node_modules目录下,一般安装生产环境所用依赖。如vue,element-ui。
// npm instal 模块名-save -dev: 安装到node _modules目录下,一般安装开发环境所用依赖。如webpack、babel.
//题目:
// 使用npm下载全局包的指令是 ( B
// A.npm install 模块名(安装
// B.npm install 模块名-g
// C.npm unstall 模块名(删除
// D.npm install模块名-save
九、相等(==)和全等(===)运算符
// 案例:
//console.log( 6 == '6'); //true
//console.log( 6 === '6'); //false
// 题目:
相等 (==) 和全 (===) 运算符有哪些区别?
相等运算符用于比较两个操作数是否相等,操作数会进行类型转换l2)全等运算符用于比较两个操作数是否严格相等,操作数不会进行类型转换,
十、数据类型
共有八种数据类型,分别是:underfined、null、bollean、number、string、object、sysbol、bigint。
这些数据类型分为基本数据类型和引用数据类型
1.基本数据类型和引用数据类型区别
在方法中定义的非全局基本数据类型的具体内容是存储在栈中的。
引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是具体内容所在的内存地址
2.基本类型和引用类型
基本类型:Undefined、Null、Boolean、Number和String,基本类型在内存中占据空间小、大小固定,他们的值保存在栈(stack)空间。
引用类型:(对象、数组、函数),引用类型占据空间大、大小不固定,栈内存中存放地址纸箱堆(heap)内存中的对象
十一、localStorage和sessionStorage区别?
localStorage:没有过期时间。
sessionStorge:当用户关闭浏览器后,数据将被删除。
十二、ES6新特性
let和const、模块化、箭头函数、解构赋值、模板字符串、Promise、Map和Set数据结构、装饰器..
var有变量提升
十三、同步操作和异步操作
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
而同步处理则与之相反,需要一件事完成之后才能走另外一件事,不能“分心”
举例:
异步处理-小明一边吃西瓜一边看电视;
同步处理-小明吃完了西瓜再去看电视;
题目:
如何理解同步和异步?
1、同步指两个进程的运行是相关的,一个进程要阻塞等待另外一个进程的运行
2、异步的意思是两个进程毫无相关。发送完一个请求,不必等待返回。
十四、闭包
闭包(closure)是一种代码形式,内部函数访问外部函数的局部变量。
在JS中,每当创建一个函数,闭包就会在函数创建的同时被创建出来,作为函数内部与外部连接起来的一座桥梁。
举例:JS函数A里面有一个函数B,函数B访问了函数A里面定义的局部变量,此时就产生了闭包。变量所在的函数就是闭包函数,这里A就是闭包函数
作用:解决变量污染问题,让变量别函数保护起来
十五、fs模块
node提供了一个内置模块fs,专门用来操作文件。可以读取一个文件的内容,也可以把内容写入到一个文件。
导入模块:require('模块名')
读取文件:fs.readFile('文件的路径',(err,data) => { } )
写入文件:fs.writeFile('文件的路径',写入的内容,err => { } )
追加文件内容:fs.appendFile('路径','要追加的内容',err => { } )
拷贝文件:fs.copyFile('要拷贝的文件路径','目标文件的路径')
删除文件:fs.unlink('文件路径',err => { } )
十六、HTML
1.Promise?
目的:解决异步编程中回调地狱的问题,将异步操作以同步操作的流程表达出来,避免层层嵌套的回调函数。
用法:调用promise.then()方法,then方法可以接受两个回调函数函数作为参数。成功,就会执行.then方法的第一个回调函数。失败,就会执行then方法的第二个回调函数。
2.异步编程的实现形式?
回调函数的方法。
Promise对象。
async/await函数。
十七、对JSON的理解
JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。
要实现JSON字符串转换为JS对象,使用JSON.parse()方法。
要实现JS对象转换为JSON字符串,使用JSON.stringify()方法。
十八、promise的基本用法
1.Promise.resolve 方法:(value)=>(1)value: 成功的数据或 promise
说明:返回一个成功/失败的-promise 对象。
2.Promise.reject 防法:(reason)=>(1)reason: 失败的原因
说明:返回一个失败的 promise 对象
node.js知识点相关推荐
- 【node.js知识点(补充版)】
文章目录 一.[定时器] 二.[变量] 三.[字符串] 四.[数组] 五.[数组方法] 六.[数据结构Set] 七.[请求方法] 八. [HTTP状态码] 九.[npm包管理] 十.[Math对象] ...
- node.js知识点总结
一.当exports对象和module.exports对象指向的不是同一个对象时,以module.exports对象为准. 二.系统模块 // 1. fs.readFile() 读取文件 // 语法格 ...
- Node.js知识点整理之----Buffer类
Buffer类,是用来创建一个专门存放二进制数据的缓存区. Buffer类,是一个可以在任何模块中使用的全局类. Buffer类使用 new 关键字创建该类的实例对象. 三种形式创建实例对象: new ...
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...
- 45天带你玩转Node(第一天)初探Node.js
45天带你玩转Node 粉丝要求博主系统的写一篇关于Node.js的学习资料,但其实我们的Node.js知识点并不少,所以博主为大家搭建了一个专栏,为了方便大家系统的学习Node.js,大家记得订阅哦 ...
- 解析Node.js v6.9.5官方文档的第一个例子的知识点
2019独角兽企业重金招聘Python工程师标准>>> 这段代码是nodejs界的"hello word",使用nodejs搭建了服务器并返回"hell ...
- node.js学习文档_学习NodeJs从每天一个小知识点开始
NodeJs中process.cwd()与__dirname的区别: process.cwd() : 是当前执行node命令时候的文件夹地址 --工作目录,保证了文件在不同的目录下执行时,路径始终不变 ...
- 【node.js】知识点总结
不会就问就查询!科技利民,学海无涯2! 一.概念 Node.js不是语言.不是库.不是框架: Node.js是JavaScript的运行环境,可以解析.执行JavaScript代码: 使JavaScr ...
- Node.js前置知识点(二):同步/异步
前言 本文是node.js前置知识系列文章的第二篇,主要介绍 同步/异步:阻塞/非阻塞 的相关概念 (参考来源 见文末的 Reference) 一 什么是 同步/异步 同样从 What的角度开始介绍, ...
最新文章
- 大胆,用Python爬一爬都是哪些程序员在反对996?!
- 接受返回值 server sql_SQL,何必在忆之一(基础篇)
- 在Windows环境下配置QT Creator 读取NC文件(NetCDP,C++接口)
- UIPasteboard
- mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期格式
- 2013计算机视觉代码合集一
- android实现手机拍照以及图片预览功能_手机系统将有A/B分区?Android 11这些变化你关注过吗...
- gateway 车辆网关
- 洗礼灵魂,修炼python(42)--巩固篇—type内置函数与类的千丝万缕关系
- Android下拉刷新上拉更多瀑布流(附源码)
- android图标成功,Android多启动图标实现
- flex4 权威指南 part01
- MMD原神动画制作(学习教程一)
- CMD下载速度过慢解决方案
- vue获取剪切板内容_Vue实现剪贴板复制功能
- 技术篇(二)Demo示例——Bundle打包和加载
- 设置python程序开机自启动
- Gerrit no Verified 在最新的2.7版本之后添加Verified
- 报错:在实体引用中, 实体名称必须紧跟在 后面。
- c语言中3%3e2%3e1的值,Javascript中的空数组值