@windchimes
2018-04-19T14:33:11.000000Z
字数 1211
阅读 242
面试
click事件为什么要加300ms的延迟
es6为什么没有变量提升
隐藏滚动条
1px像素兼容问题
input输入框实时监听输入元素 onchange(实时监听变化,失去焦点时) oninput(实时的监听并变化)
es5的原型和作用域
继承
闭包
数组去重
为什么js的基本数据类型,比如string会有方法呢?
媒体查询 @media
postMessage如何实现跨域
基本包装类型 new String
讲解链接:https://zhidao.baidu.com/question/1242686664534046939.html
1)clcik事件增加300ms的延迟,是2007年苹果手机的工程师发明的,那时候主要是pc的大屏幕展示,为了在小屏幕上判断用户是要双击操作还是单击,给了300ms的延迟去判断
var arr = [1,2,3,4,5,2,3,4];var obj = {};var newArr = [];for(var i = 0 ;i < arr.length; i++) {if (!obj[arr[i]]) {newArr.push(arr[i]);obj[arr[i]] = 1;}}console.log(newArr)// es6let arr = [1,2,3,4,2,7,4];let set = new Set(arr);let newArr = Array.from(set);console.log(newArr)
for in 遍历对象时会同时遍历原型链上的属性,所以可以用hasOwnProperty来做判断
var obj = {'name': 'wang','age': 26}Object.prototype.sex = '男'var keys = []var values = []for(var key in obj) {if (obj.hasOwnProperty(key) == true) {keys.push(key);values.push(obj[key])}}console.log(keys)console.log(values)
新建数组去重法
var arr =[1,2,3,4,5,6,3,2,2];var newArr = [];for(var i = 0;i < arr.length; i++) {if(newArr.indexOf(arr[i]) === -1) {newArr.push(arr[i])}}console.log(newArr)
es5的indexOf方法有两个缺点: 1)返回index不够语义化;2)不能准确判断NaN
用es6的includes方法替代,返回true或者false布尔值,而且可以准确的判断NaN
var arr =[1,2,3,4,5,6,3,2,2];var newArr = [];for(var i = 0;i < arr.length; i++) {if(!newArr.includes(arr[i])) {newArr.push(arr[i])}}console.log(newArr)