0%

京东一面

1.三栏布局的实现

2 float顺序是ABC还是ACB,flex布局中的属性讲一下

3 js的数据类型

开始吟唱

4 Number和BigInt的区别

答得好像不是很完善?

5 判断数据类型

typeof instanceOf Object.prototype.toString.call,constructor

6 typeof object===?为什么

7 讲讲原型链

8看代码输出:

1
2
3
4
5
6
7
var a=100
function b(){
//变量提升
a=10
}
b()
console.log(a)//10 因为b里面是给全局变量a重新赋值
  1. x
1
2
3
4
5
6
7
8
9
var a=100
function b(){
//变量提升
a=10
return
function a(){}
}
b()
console.log(a)//100,b进入执行上下文栈后,a函数变量提升,然后a赋值,这里是创建了一个新的局部变量a,return后b函数执行完毕,b出栈,里面的局部变量a被销毁,外面访问的a是全局变量a,即100

10 var let const区别

11 看代码输出:关于this指向

1
2
3
4
5
6
7
8
9
10
11
var name="win"
let obj={
name:'obj',
a:()=>{
console.log(this.name)
}
}
let obj1={
name:'obj1'
}
obj.a.call(obj1)//win

12

1
2
3
4
5
6
7
8
9
10
11
let arr=['a','b','c','d','e','f','g','h']
function print(){
for(var i=0;i<arr.length;i++){
img=new Image()
img.src=arr[i]
img.onload=function(){
console.log(i)
}
}
}
print()//8,8,8,8,8,8,8,8

13 如果img的加载速度很快呢

还是8个8,因为是异步任务,无论多快都要等到同步任务执行完才执行异步任务

14 跨域问题的解决方案

cors josonp 代理服务器

15 数组有哪些方法 哪些会改变数组本身

开始吟唱,改变数组本身的有pop,push,reverse,shift,unshift

16 讲讲简单请求和复杂请求

简单请求:get post,head,客户端服务器只发生一次请求:

复杂请求:先发送一次预检请求,Get,post,head之外的请求,请求头中包含自定义头部字段,向服务器发送了application/json格式的数据,在浏览器服务器正式通信前,浏览器先发生OPTION请求进行预检,获知该服务器是否允许该实际请求,这一层OPTION称为预检请求,服务器成功响应预检请求后才会发送真正的请求并且挈带真正的数据

客户端和服务器发送两次请求

17 设置哪个字段允许浏览器携带cookie

cookie有同源限制,如果发送跨域,浏览器不会自动带上cookie,如果服务端设置cors,Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: [特定域名] // 不可以是*,客户端,XMLHttpRequest发请求需要设置withCredentials=true,fetch 发请求需要设置 credentials = include

参考:https://juejin.cn/post/6859939491994402824

18 手写map:

1
2
3
4
5
6
7
8
9
10
11
function myMap(fn,context){
if(typeof fn !== 'function'){
throw new Error("this first argument must be a function")
}
let res=[]
let arr=this
for(let i=0;i<arr.length;i++){
res[i]=fn.call(context,arr[i],i,arr)
}
return res
}

MDN链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map

19 用正则表达式实现千分符

1
2
let num='12345677799'
console.log(num.toString().replace(/(\d)(?=(\d{3})+$)/g,'$1,'))

x(?=y)先行断言,匹配x仅仅匹配x后面跟着y,从后往前,以3的倍数进行分割,$1表示子字符串的匹配,将其替换为’$1’,即在每一个匹配到的子字符串后加,

20 说一下this.$nextTick