文章目录
一、【定时器】
知识点:
1.setTimeout:定时执行。设置一个时间,等待时间到达的时候只执行一次,但是执行以后定时器还在,只是没有运行。
2.setInterval:循环执行。设置一个时间间隔,每隔一段时间都会执行一次这个方法,直到这个定时器被销毁掉。
(使用clearTimeout()和clearInterval()可以清除定时器。)
案例:
setTimeout(function(){
console.log(123);
},2000)
setInterval(function(){
console.log('abc');
},2000)
题目:
-
1.对以下代码的描述中,正确的是( )
setInterval(function(){
console.log(1);
},2000)
A.回调函数会在延迟2s后执行一次。
B.回调函数会以2s为间隔重复执行。
C.回调函数会在延迟2mins后执行一次。
D.回调函数会重复执行2000次。 -
2.执行下面的代码,结果的输出顺序是 ( )
console.log(1);
setTimeout(function(){
console.log(2);
},0)
console.log(3);
解析:setTimeout指定的代码,必须等到本次执行的所有同步代码都执行完,才会执行。二、【变量】
知识点:
变量的名称须遵循如下3条规则
1.首字母必须是字母(大小写均可)、下划线(_),或者美元符号($).(数字开头,非法。)
2.余下的字符可以是下划线、美元符号、任意字母或者数字字符。
3.变量名不能是关键字(keyword)或者保留字。
4.驼峰命名
题目:
- 以下可以作为变量名使用的是( )
A.9name
B.$strick9
C.p wstrick
D.delete(关键字)
三、【字符串】
知识点:
1.判断一个字符在不在某个字符串里面
let str = '蜜雪冰城甜蜜蜜'
let index1 = str.indexOf('甜蜜蜜')
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 bjx'
console.log(str1.split()); //['i love bjx']
b.如果已不存在的字符串(或者正则匹配不到的字符串)进行分割,也会直接将字符串转为数组。
let str2 = 'i love bjx'
console.log(str2.split('M')); //['i love bjx']
c.按照空格字符串(‘’)的形式进行分割,每个字符都分割。
let str3 = 'i love bjx'
console.log(str3.split('')); //['i', ' ', 'l', 'o', 'v', 'e', ' ', 'b', 'j', 'x']
d.传入并原数组有分隔符的情况下,找到分隔符,将其从字符串删除,并将字符串数组返回。
let str4 = 'i love bjx'
console.log(str4.split(' ')); //['i', 'love', 'bjx']
5.大小写转换
console.log('ABCDEFG'.toLowerCase()); //abcdefg
console.log('abcdefg'.toUpperCase()); //ABCDEFG
题目:
-
1.判断一个字符串在不在某个字符串里面,用( )方法。
A.str.indexOf
B.str.substr
C.str.replace
D.str.split -
2.以下代码的打印结果是 ( )
console.log(‘abcdef’.toUpperCase()); -
3.以下代码的打印结果是 ( )
console.log(‘ABCDEF’.toLowerCase());四、【数组】
let array = ['北极星']
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对象(即数组)的方法是( )
A.push()
B.shift()
C.split()
D.join() -
2.执行下面的代码,在控制台输出的length属性为 ( )
var arr = []
arr[3] = 3
arr.push(4)
console.log(arr.length); -
3.执行下面的代码,在控制台输出的length属性为 ( )
var arr = [];
arr[4] = 3;
console.log(arr.length);五、【数组方法】
知识点:
1.map:利用某种规则映射得到一个新数组。(遍历每一个元素,并对每一个元素做相应处理,返回一个新数组。)
回调函数执行次数等于数组长度。map函数返回的新数组长度等于原数组长度。回调函数一定要return。
语法:数组.map((value,index) => {})
案例:
let arr = [1,2,3,4,5]
let arr1 = arr.map((value,index) => {
return value + 1 //让每一个元素的值➕1
})
console.log(arr1); //[2, 3, 4, 5, 6]
2.filter:用于筛选数组中满足条件的元素,返回筛选后的新数组。
回调函数执行次数等于数组长度。filter函数返回的新数组长度不等于原数组长度。
案例:
let arr = [1,2,3,4,5]
let arr1 = arr.filter(function(value){
// 筛选条件
return value > 3
})
// arr1里保存的是所有满足条件的元素
console.log(arr1); //[4, 5]
3.forEach:用于遍历数组,相当于for循环的另一种写法。
回调函数执行次数等于数组长度。forEach函数没有返回值。回调函数不需要return。
案例:
let arr = [1,2,3]
let sum = 0
arr.forEach(function(value){
sum += value
})
console.log(sum); //6
4.some:用于判断数组中是否存在满足条件的元素.
some函数返回一个布尔类型值。
let arr = [1,2,3]
let arr1 = arr.some((item,index) => {
return item < 0
})
console.log(arr1); //false
5.every:用于判断数组中是否所有元素都满足条件。
every函数返回一个布尔类型值。
let arr = [23,31,60,88,-50,90,108];
let arr1 = arr.every((item) => {
return item > 0;
});
console.log(arr1);
6.findIndex:获取符合条件的第一个元素位置(下标)。
符合则返回元素下标,不符合则返回-1.
let arr = [
{ name:'张三',age:20 },
{ name:'李四',age:30 },
{ name:'王五',age:25 },
{ name:'赵六',age:33 },
{ name:'小七',age:10 },
]
需求:查找arr1中第一个未成年在什么位置
let res = arr.findIndex((item,index) =>{
return item.age < 18;
})
console.log(res); //4
7.reduce:遍历数组元素,为每个数组执行一次回调函数。
let arr1 = [20,55,80,70,92,35]
let res1 = arr1.reduce((sum,value) => {
return sum + value
})
console.log(res1);
题目:
-
1.以下代码的打印结果是 ( )
let arr = [23,31,60,88,-50,90,108];
let arr1 = arr.every((item) => {
return item > 0;
});
console.log(arr1); -
2.以下代码的打印结果是 ( )
let arr1 = [20,55,80,70,92,35]
let res1 = arr1.reduce((sum,value) => {
return sum + value
})
console.log(res1); -
3.forEach和map方法有什么区别?
forEach()方法不会返回执行结果,也就是说forEach()方法会修改原来的数组,但是没有返回值。
map()方法得到一个新的数组,是map方法修改数组后返回回来的新数组。六、【数据结构Set】
知识点:
ES6提供了新的数据结构Set。它类似与数组,但是成员的值都是唯一的,没有重复的值。
题目:
-
1.以下代码的打印结果是 ( )
const s = new Set([1,2,3,3,4,4])
console.log(s.size);
解析:console.log(s); -
2.以下代码的打印结果是 ( )
const s = new Set ([1,2,3,3,4,4,5,6])
console.log(s.size);七、【请求方法】
知识点:
GET请求:可以理解为“取”的意思。用来获取数据,不对服务器的数据做任何的修改、新增、删除等操作。
POST请求:可以理解为“贴”的意思。数据发送到服务器以创建或更新资源,侧重于更新数据。
PUT请求:可以理解为“放”的意思。数据发送到服务器以创建或更新资源,侧重于创建数据。
DELETE请求:“删除”。删除指定的资源。
HEAD请求:HEAD方法与GET方法相同,也是从服务器获取信息。但服务器不会返回请求的实体数据,只会传回相应头。
可以用在很多并不真正需要资源的场合,避免传输body数据的浪费。
比如,想要检查一个文件是否存在,只要发个信息HEAD请求就可以了,没有必要用GET把整个文件都取下来。
PATCH(布丁)请求:用于上传数据并更新“部分”资源。
题目:
-
1.在HTTP中,不可用的请求方法是( )
A.RETURN
B.POST
C.HEAD
D.DELETE -
2.表示从服务器获取资源的请求方式是( )
A.GET
B.POST
C.PUT
D.PATCH -
3.请求方式GET和POST的区别有哪些?
①语义不同,GET是获取数据,POST是提交数据。
②HTTP规定GET比POST安全,因为GET只做读取,不会改变服务器中的数据。
③GET请求会把附加参数带在URL上,而POST请求会把提交数据放在报文内。
在浏览器中,URL长度会被限制,所以GET请求能传递的数据有限。八、 【HTTP状态码】
知识点:
1开头的状态码(信息类)| 100,接收的请求正在处理。
2开头的状态码(成功类)| 200,服务器已成功处理了请求。
3开头的状态码(重定向)| 301,永久性重定向。302,临时重定向。
4开头的状态码(客户端错误)| 400,错误请求,服务器不理解请求的语法。403,服务器拒绝请求。
5开头的状态码(服务器错误)| 500,服务器内部错误,无法完成请求。503,服务器停机维护,无法处理请求。
题目:
-
1.表示请求发送成功的状态码是( )
A.200
B.300
C.400
D.500 -
2.HTTP应答中的500错误指的是( )
A.服务器内部错误
B.文件未找到
C.客户端网络不通
D.没有访问权限 -
3.在HTTP中,总共有5类状态码,请简单介绍一下这5类状态码。
①1XX:信息,服务器收到请求,需要请求者继续执行操作。
②2XX:成功,操作被成功接收并处理。常见的是200,代表请求成功。
③3XX:重定向,表示需要进一步的操作以完成请求。
④4XX:客户端错误,请求包含语法错误或无法完成请求。
⑤5XX:服务端错误,服务器在处理请求的过程中发生了错误。九、【npm包管理】
知识点:
npm install 模块名:本地安装。安装到当前项目的node_modules目录下,只有当前项目可以用此依赖。
npm install 模块名 -g:全局安装。电脑上的任何项目都可以使用这个依赖。
npm install 模块名 -save:安装到node_modules目录下,一般安装生产环境所用依赖。如vue,element-ui。
npm install 模块名 -save -dev:安装到node_modules目录下,一般安装开发环境所用依赖。如webpack、babel。
题目:
-
使用npm下载全局包的指令是( )
A.npm install 模块名
B.npm install 模块名 -g
C.npm unstall 模块名
D.npm install 模块名 -save十、【Math对象】
知识点:
1.圆周率:Math.PI
console.log(Math.PI); //3.141592653589793
2.绝对值:Math.abs()
console.log(Math.abs(-2)); //2
3.找最大值/最小值:Math.max() Math.min()
console.log(Math.max(1,2,3)); //3
console.log(Math.min(1,2,3)); //1
4.0-1随机小数:Math.random
console.log(Math.random());
5.幂运算:Math.pow(x,y)
console.log(Math.pow(2,3)); //8
6.向上取整/向下取整:Math.ceil() Math.floor()
console.log(Math.ceil(1.2)); //2
console.log(Math.ceil(-1.2)); //-1
console.log(Math.floor(1.8)); //1
console.log(Math.floor(-1.8)); //-2
localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问
并且当会话结束后数据也随之销毁
题目:
-
localStorage和sessionStorage有哪些异同?
①localStorage:没有过期时间。
②sessionStorage:当用户关闭浏览器后,数据将被删除。十二、【数据类型】
知识点:
基本数据类型:Number、String、Boolean、Null、Undefined、Symbol(ES6),
这些类型可以直接操作保存在变量中的实际值。
基本数据类型是指存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,
它们是直接按值存放的,所以可以直接按值访问。基本数据类型的值是没有办法添加属性和方法的。
引用数据类型:Object(在JS中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)
引用类型是存放在堆内存中的对象,变量其实是保存的在栈内存中的一个指针(保存的是堆内存中的引用地址),这个指针指向堆内存。
引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象
十三、【基本数据类型和引用数据类型区别】
知识点:
1、声明变量时内存分配不同
原始类型:在栈中,因为占据空间是固定的,可以将他们存在较小的内存中-栈中,这样便于迅速查询变量的值。
引用类型:存在堆中,栈中存储的变量,只是用来查找堆中的引用地址。
这是因为:引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。
相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响
2、不同的内存分配带来不同的访问机制
在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,
然后再按照这个地址去获得这个对象中的值,这就是传说中的按引用访问。 而原始类型的值则是可以直接访问到的。
3、复制变量时的不同
1)原始值:在将一个保存着原始值的变量复制给另一个变量时,会将原始值的副本赋值给新变量,此后这两个变量是完全独立的,他们只是拥有相同的value而已。
2)引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,
也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个作出的改变都会反映在另一个身上。
(这里要理解的一点就是,复制对象时并不会在堆内存中新生成一个一模一样的对象,只是多了一个保存在栈中指向这个对象指针的变量罢了)
题目:
- 基本数据类型和引用数据类型有什么区别?
①在方法中定义的非全局基本数据类型的具体内容是存储在栈中的。
②引用数据类型变量,其具体内容都是存放在堆中的,
而栈中存放的是其具体内容所在的内存地址。
十四、【ES6新特性】
ES6是ECMAScript6的简称,是JavaScript的下一代标准,于2015年6月正式发布。
目标是使JavaScript可以用于编写复杂的大型应用程序,成为企业级开发语言
题目:
- ES6有哪些新特性?
let关键字、const关键字、for…of循环、字符串模版、参数默认值、类与继承箭头函数、模块
十五、【fs模块方法】
读取文件
fs.readFile(‘文件的路径’,(err,data) => { })
写入文件
fs.writeFile(‘文件的路径’,写入的内容,err =>{ })
追加文件内容
fs.appendFile(‘路径’,‘要追加的内容’,err => {
})
拷贝文件
fs.copyFile(‘要拷贝的路径’,‘目标文件的路径’)
刪除文件
fs.unlink(‘文件路径’,err => { })
题目:
- 以下哪个是fs模块中的删除文件方法?
A.fs.appenchFile()
B.fs.copyFile()
C.fs.writeFile()
D.fs.unlink()
题目:
-
什么是MVVM模式?
①MVVM是Model-View-ViewModel的缩写。
②Model层代表数据模型,View代表UI组件,ViewModel是View和Model层连接的桥梁。
③数据会绑定到viewModel层并自动将数据渲染到页面中,
视图变化的时候会通知viewModel层更新数据,数据变化后也会通知视图。 -
【同步操作和异步操作】
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。
当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
而同步处理则与之相反,需要一件事完成之后才能做另外一件事,不能“分心”。
举例。异步处理-小明一边吃西瓜一边看电视;同步处理-小明吃完了西瓜再去看电视 -
题目:
如何理解同步和异步?
①同步指两个进程的运行是相关的,一个进程要阻塞等待另外一个进程的运行。
②异步的意思是两个进程毫无相关。发送完一个请求,不必等待返回。 -
题目:
let、const、var的区别? -
1.什么是闭包?
①闭包(closure)是一种代码形式,内部函数访问外部函数的局部变量。
②在JS中,每当创建一个函数,闭包就会在函数创建的同时被创建出来,作为函数内部与外部连接起来的一座桥梁。
③举例:JS函数A里面有一个函数B,函数B访问了函数A里面定义的局部变量,
此时就产生了闭包。变量所在的函数就是闭包函数,这里A就是闭包函数。 -
2.闭包的特性不包括?
A.降低内存的使用量。
B.变量不会被垃圾回收。
C.访问其他作用域中的变量。
D.保存变量的应用。
【node模块】
-
1.在Node.js中要加载http模块,怎么做?
A.http模块是全局的,无需加载,直接使用即可。
B.使用require(‘http’)即可。
C.使用module方法
D.使用exports方法 -
2.在Node.js中要加载fs模块,怎么做?
A.http模块是全局的,无需加载,直接使用即可。
B.使用require(‘fs’)即可。
C.使用module方法
D.使用exports方法 -
1.以下代码的打印结果是 ( )
console.log(foo);
var foo = 2 -
2.执行下面的代码,在控制台输出的值为 ( )
var a = 1;
setTimeout(function(){
console.log(a); //3
a = 2
console.log(a); //2
},1000)
a = 3; -
3.ES6之前没有以下哪种作用域? ( )
A.块级作用域
B.函数作用域
C.局部作用域
D.全局作用域 -
题目:
beforeMounted这个生命周期钩子用在 ( )函数。
A.组件被创建前。
B.组件挂载前。
C.组件更新前。
D.组件销毁前。 -
题目:
CDN的作用不包括 ( )。
A.使用户就近获取所需内容。
B.降低网络拥塞。
C.提高用户访问相应速度。
D.降低系统支持的并发流数目。题目:
-
1.异步编程的实现方式?
①回调函数的方式
②Promise对象
③async/await函数题目:
-
对JSON的理解?
①JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。
②要实现JSON字符串转换为JS对象,使用JSON.parse()方法。
③要实现JS对象转换为JSON字符串,使用JSON.stringify()方法。
题目:
-
Promise的基本用法?
①Promise.resolve 方法: (value) => {} () value: 成功的数据或 promise 对象
说明: 返回一个成功/失败的 promise 对象。
②Promise.reject 方法: (reason) => {} () reason: 失败的原因
说明: 返回一个失败的 promise 对象。 -
对AJAX的理解?实现一个AJAX请求?
①AJAX全称(Async Javascript and XML), 即异步的JavaScript 和XML,
是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,
与服务器交换数据,并且更新部分网页。
②let xhr = new XMLHttpRequest;
xhr.open(‘请求方式’,‘请求地址’ );
xhr.οnlοad=function(){请求成功后的回调函数};
xhr.send()【数组排序】
题目: -
1.执行下面的代码后,arr数组的值为( )
var arr = [4,1,5,2,3]
let arr1 = arr.sort(function(a,b){
return a - b //升序排列
// return b - a //降序排列
})
console.log(arr1); -
2.执行下面的代码,arr数组的值为( )
var arr = [6,3,2,1,9]
arr.sort(function(a,b){
return a - b
})
题目:
-
以下代码的打印结果是 ( )
let add = a => a + b
console.log(add(100,200));function add (a) {
return a + b
}
/ -
以下代码的打印结果是 ( )
let add = a => a + b
console.log(add(1,2));