js面试题

1、let、var、const区别

1、作用域不同,var是函数作用域,而let是块作用域
2、 let不能在定义之前访问该变量,但是var是可以得。
3、 let不能被重新定义,但是var是可以的。
4、const:它用于创建一个不可变变量。

2、js 算法,判断一个数组中的数字出现多少次
let arr = [11, 11, 2, 2, 5, 5, 5, 5, 3];
//创建一个map,把每个数字和其个数相对应
let countObj = {};
for (i = 0; i <= arr.length - 1; i++) {
    let v = arr[i];
    if (countObj[v]) {
        countObj[v]++;
    } else {
        countObj[v] = 1;
    }
}
// console.log(countObj); //{ '2': 2, '3': 1, '5': 4, '11': 2 }
for (let key in countObj) {
    if (countObj[key] === 1) {//判断在对象中出现为1次的是哪个属性
        console.log(key);//3...
    }
}
3、vue.$set

vue为了更加简洁,当data的数据是数组或者对象时,动态的添加或删除,视图将不会更新

4、http状态码有哪些?分别是什么意思?
image.png

1(信息类):表示接收到请求并且继续处理
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
2
(响应成功):表示动作被成功接收、理解和接受
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
3(重定向类):为了完成指定的动作,必须接受进一步处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
4
(客户端错误类):请求包含错误语法或不能正确执行
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
5**(服务端错误类):服务器不能正确执行一个正确的请求
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

5、ES6中新增了什么?

1、定义变量加入了 let const
2、封闭空间 {} 避免全局污染
3、字符串和变量的拼接 ${ }
4、解构赋值 ...
5、箭头函数
6、## map和reduce

数组中新增了map和reduce方法。

map

map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。

举例:有一个字符串数组,我们希望转为int数组

let arr = ['1','20','-5','3'];
console.log(arr)

arr = arr.map(s => parseInt(s));

console.log(arr)
image

reduce

reduce():接收一个函数(必须)和一个初始值(可选),该函数接收两个参数:

  • 第一个参数是上一次reduce处理的结果
  • 第二个参数是数组中要处理的下一个元素

reduce()会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数

举例:

const arr = [1,20,-5,3]

没有初始值:

image

指定初始值:

image

Set,本质与数组类似。不同在于Set中只能保存不同元素,如果元素相同会被忽略。跟java很像吧。

6、js箭头函数和普通函数的区别

1、this指向不同
(1)普通函数中的this:
在简单调用中,非严格模式下,指向window。严格模式下,为undefined。
箭头函数没有自己的this,内部this的值,依赖于外部非箭头函数的this。

2、构造函数
(1)普通函数
普通函数可以作为构造函数来用,用new去新建对象实例。
(2)箭头函数
不能当做构造函数去用,并且,会报错。

3、隐式return
(1)普通函数

用return去返回一个函数的结果。无return语句,或者return后面无表达式,则返回undefined。
(2)箭头函数

如果函数仅有一个表达式,那么该表达式的结果会被隐式返回

7、 判断JS数据类型的四种方法

1、typeof
2、instanceof
instanceof用来判断A是否为B的实例,表达式为:A instanceof B,如果A是B的实例,则返回true,否则返回false。instanceof检测的是原型,内部机制是通过判断对象的原型链中是否有类型的原型。
3、constructor


image.png
8、调用接口的方法
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.js当中有哪些数据类型 5个基础:字符串,布尔,数值,null,undefined,1个复杂:Object在e...
    林不羁吖阅读 278评论 0 0
  • 数据类型 NumberStringbooleanSymbolundefinednullBigIntObjectAr...
    人在胖天在看_640c阅读 710评论 0 15
  • 1. setTimeout输出值的时候,如何实现i按序输出? 问:为什么输出的是10个10? 答:JS是一个单线程...
    逸軒阅读 368评论 0 1
  • 一、js面试题 JavaScript 中的 this 究竟指向谁,箭头函数的 this 有什么不同 普通函数thi...
    落魂灬阅读 923评论 0 11
  • 1、原型、原型链 原型:js中一切皆对象,对象都有一个隐式的属性_proto_,它指向该对象的原型-prototy...
    高至秦阅读 3,967评论 0 7