[关闭]
@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的延迟去判断
  1. var arr = [1,2,3,4,5,2,3,4];
  2. var obj = {};
  3. var newArr = [];
  4. for(var i = 0 ;i < arr.length; i++) {
  5. if (!obj[arr[i]]) {
  6. newArr.push(arr[i]);
  7. obj[arr[i]] = 1;
  8. }
  9. }
  10. console.log(newArr)
  11. // es6
  12. let arr = [1,2,3,4,2,7,4];
  13. let set = new Set(arr);
  14. let newArr = Array.from(set);
  15. console.log(newArr)
for in 遍历对象时会同时遍历原型链上的属性,所以可以用hasOwnProperty来做判断
  1. var obj = {'name': 'wang','age': 26}
  2. Object.prototype.sex = '男'
  3. var keys = []
  4. var values = []
  5. for(var key in obj) {
  6. if (obj.hasOwnProperty(key) == true) {
  7. keys.push(key);
  8. values.push(obj[key])
  9. }
  10. }
  11. console.log(keys)
  12. console.log(values)
新建数组去重法
  1. var arr =[1,2,3,4,5,6,3,2,2];
  2. var newArr = [];
  3. for(var i = 0;i < arr.length; i++) {
  4. if(newArr.indexOf(arr[i]) === -1) {
  5. newArr.push(arr[i])
  6. }
  7. }
  8. console.log(newArr)

es5的indexOf方法有两个缺点: 1)返回index不够语义化;2)不能准确判断NaN
用es6的includes方法替代,返回true或者false布尔值,而且可以准确的判断NaN

  1. var arr =[1,2,3,4,5,6,3,2,2];
  2. var newArr = [];
  3. for(var i = 0;i < arr.length; i++) {
  4. if(!newArr.includes(arr[i])) {
  5. newArr.push(arr[i])
  6. }
  7. }
  8. console.log(newArr)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注