博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端面试题
阅读量:6851 次
发布时间:2019-06-26

本文共 1474 字,大约阅读时间需要 4 分钟。

如何实现垂直水平居中

BFC

包含块

优化问题

内存泄漏问题

清除浮动

模块化

promise相关代码

盒模型

媒体查询

js设计模式

node.js

saa/less

数组去重(set)

function unique5(arr){  var x = new Set(arr); return [...x];}复制代码

数组降维

二维数组降维(需要注意的是如果数组的元素还是数组则不会再展开了,也就是concat方法只能降低一维)function flatten2d(arr) {var result = [];for(var i = 0; i < arr.length; i++) {result = result.concat(arr[i]);}return result;}复制代码
多维数组降维var arr = [2, 3, [2, 2], [3, 'f', ['w', 3]], { "name": 'Tom' }];function deepFlatten(arr) {    var res = [];    if (Array.isArray(arr)) {        arr.forEach((item) => {            res = res.concat(deepFlatten(item));        });    } else {        res = res.concat(arr);    }    return res;}console.log(deepFlatten(arr));// [2, 3, 2, 2, 3, "f", "w", 3, {name: "Tom"}]复制代码

new操作符具体干了什么

1.先创建了一个新的空对象2.然后让这个空对象的__proto__指向函数的原型prototype3.将对象作为函数的this传进去,如果return 出来东西是对象的话就直接返回 return 的内容,没有的话就返回创建的这个对象复制代码
const o = new Object();//创建了一个新的空对象oo.__proto__ = Foo.prototype;//让这个o对象的` __proto__`指向函数的原型`prototype`Foo.call(o);//this指向o对象a = o;//将o对象赋给a对象复制代码

函数声明和函数表达式的区别

// 函数声明         // function fn() {}        // fn();        //1 函数声明必须有函数名        //2 函数可以在任意地方调用fn();  // 函数表达式        // 1 前后两个函数的名字可以相同也可以不相同        // 2 function 后面的这个名字是可以省略的         // 3 function 后面的这个名字只能再函数内部使用        // 4 函数调用只有在函数表达式声明后调用。        // var fn = function fn () {};如果是使用的函数表达式,那么函数调用就不能在表达式之前,如果是函数声明,由于在全局执行上下文的执行创建阶段时,函数声明会提升到上面,所以是可以在函数声明之前调用函数的。复制代码

函数声明提升和变量提升

函数柯里化

购物车实现

事件委托

转载于:https://juejin.im/post/5ca30e14f265da30a231a141

你可能感兴趣的文章