美团前端一面
先是自我介绍,聊一聊做了什么项目什么角色,为什么做前端,如何学习的,然后开始提问:
1.如何判断函数参数是否为数组?如何判断对象?ES6如何判断?
Array.isArray() //ES5加入的方法,判断是否为数组,ES6同样适用
Object.prototype.toString.call() //判断数组和对象,ES6加入symbol数据类型后,结果不准确
instanceof //判断数组和对象,问题在于假定只有一个全局执行环境,除此之外也有ES6加入symbol数据类型后,结果不准确的问题
typeof //判断对象
(typeof param === 'Object' || typeof param === 'Function') && param !== null2.箭头函数和普通函数的区别
做题
this.a = 20; var test = { a: 40, init: () => { console.log(this.a); function go() { this.a = 60; console.log(this.a); } go.prototype.a = 50; return go; } }; var p = test.init(); p();控制台输出结果以及原因
输出:20 60
3.ES6 var let const 定义变量的区别
var 函数作用域,已声明未初始化时是undefined
let 块作用域,无提升,声明变量一定要在声明后才能引用,不允许重复声明,暂时性死区
const 块作用域,无提升,一旦声明需立即初始化,暂时性死区,声明变量时表示保存地址不变,指向的数据结构可变
做题
let d = 2; const e = 10; (function () { var a = b = 5; d = 3; let e = 11; })() console.log(b); console.log(d); console.log(e); console.log(a);控制台输出结果以及原因
输出:5 3 10 ReferenceError: a is not defined
需要注意的是,以下两种写法是等价的
var a = b = 5; var a = b; b = 5;4.
//let url = 'http://www.meituan.com/?user=janechang&id=325&city=wuhan' //实现parseParam(url)返回 //{ // user: janechang, // id: 325, // city: wuhan //}5.
//请写出最快查找数组[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47]中31出现的位置 function findPos(arr, item){};写了个二分查找
6.还问了些其他的
vue生命周期,渲染一个组件的生命周期过程,created/mounted都做了什么
vue生命周期,渲染一个组件的生命周期过程,created/mounted都做了什么
http常用方法,什么情况下会用options
js数据类型,null和undefined的区别
讲一下px,rem,em
然后就不记得了