前端面试基础题-JS

闭包

js实现继承的几种方式(利用原型链实现继承)

如何判断一个对象是否为空

深拷贝与浅拷贝【object.assign({},obj)第一层是深拷贝,嵌套内是浅拷贝;JSON.parse(JSON.stringify(obj)不能对Function进行拷贝】

sort的递归实现

数组相关函数(增删改查,排序,转化)【push(),unshift(),pop(),shift(),splice(),slice(),find(),some(),every(),reverse(),sort(),split()】

字符串相关函数

js类型转化(显示与隐式)

this的理解(执行时候,最后调用它的对象;setTimeout(()=>{},0)箭头函数中的this值与它的上一级作用域中this的值一样,setTimeout(function(){},0)则为window)【todo:this】

什么是原型链?原型?(hasOwnProperty())

call(),apply(),bind()

正则表达式

promise(await是在等待一个Promise的异步返回)

节流    防抖

懒加载与预加载

Js浮点数不精确

垃圾处理机制

event loop为什么处理异步需要两个队列呢?

理解 es6 class 中 constructor 方法 和 super 的作用

arguments是什么?有什么妙用?类数组结构是什么?(对象类型,有length,key类似数组索引)

严格模式与非严格模式的区别?


当我们在地址栏输入URL的时候浏览器发生了什么?

URL解析


DNS解析(域名解析)


浏览器主机根据ip地址与服务器建立TCP连接


发送HTTP请求


服务器处理请求


断开TCP连接


浏览器解析文件


浏览器布局渲染


闭包


当new Foo()时发生了什么

1.创建了一个新对象


2.将this指向这个新对象


3.执行构造函数里面的代码


4.返回新对象(this)



sort()遇上数字数组

let values = [0, 1, 5, 10, 15];

values.sort((a,b)=> b-a)  // [15, 10, 5, 1, 0]

values.sort((a,b)=> a-b)  // [0, 1, 5, 10, 15];


JS作用域

var sex = '男';

function person() {

        var name = '张三';

        function student() {        var age = 18;        console.log(name); // 张三        console.log(sex); // 男    }

        student();

        console.log(age); // Uncaught ReferenceError: age is not defined

}

person();


原型链

teacher.__proto__ == Teacher.prototype 【隐式原型|显示原型】

call(),apply(),bind()


becky借steven的充电宝

箭头函数

1.箭头函数不能用new来创建构造函数的实例,普通函数可以(因为箭头函数创建的时候程序不会为它创建construct方法,也就是没有构造能力,用完就丢掉了,不像普通函数重复利用,因此也不需要构造函数原型,也就是不会自动生成prototype属性)

2.程序不会给箭头函数创建arguments对象

3.普通函数中的this是动态的,而箭头函数中的this指向的是紧紧包裹箭头函数的那个对象(定义时决定的)

4.箭头函数不能通过bind、call、apply来改变this的值,但依然可以调用这几个方法(只是this的值不受这几个方法控制)


类数组结构

1.什么是类数组?常见的有哪些?(arguments,document.query)

var arrLike = {0:"zhangsna",1:"lisi",2:"wangwu",3:"zhaoliu",4:"xiaoming",5:"xiaohong",length:6} console.log(arrLike)

console.log("甚至可以像数组一样使用for循环")

for (let i = 0;i

2.如何转化成数组?

//(1) proptype + slice+call

Array.prototype.slice.call(arrLike) // ['zhangsna', 'lisi', 'wangwu', 'zhaoliu', 'xiaoming', 'xiaohong']

//(2)Array.from(arrLike) 

//(3)arguments 使用 [...arguments]

你可能感兴趣的:(前端面试基础题-JS)