js常见的面试题
Posted nianzhilian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js常见的面试题相关的知识,希望对你有一定的参考价值。
css 选择符有哪些
通配选择符 *
类选择符 class
id选择符 id
属性选择符 input[name=button]
包含选择符 类似 div span
子对象选择符 类似 div > span
apply() 和 call()的区别 ==和===的区别 null和undefined的区别
apply和call参数不同 call可以传多个参 apply只能传二个参
双等号只要值相等就为真
三等号 值和类型必须都相同才为真
null 指向了一个空的对象 可以看做一个空指针 不占用内存
undefined 当声明一个未初始化的变量的时候 值为undefined 会占用内存 只不过值为undefined
js的事件模型有哪些
dom0事件模型 原始事件模型
dom2事件模型 分为三个阶段 目标阶段、捕获阶段、冒泡阶段
dom3事件模型 只不过是在原来的事件上增加了一些事件类型
简述异步编程模式
对于在浏览器中频繁操作会阻碍浏览器的响应速度 通过异步编程的模式可以加快浏览器的响应速度 这种模式被称为异步编程
(实现异步编程的有好多 譬如ajax、promise、deffer等都是采用异步编程来实现的)
for for in for of之间的区别
其实三者的区别并不大 都是用来遍历数组或者对象的 只不过实现方式不同
for in 是以key -value的形式实现的
for of 是以iterator的形式实现的
深拷贝和浅拷贝的实现
//浅拷贝 function extendCopy(p){ var c = {}; for(var i in p){ c[i] = p[i]; } return c; }
//深拷贝 function deepCopy(p,c){ var c = c || {}; for(var i in p){ if(typeof p[i] === "object"){ c[i] = (p[i].constructor == Array) ? [] : {}; deepCopy(p[i],c[i]); }else{ c[i] = p[i]; } } return c; }
排序
//这里只使用冒泡排序作为例子 var arr = [2,1,4,7]; for(var i = 0;i<arr.length;i++){ for(var j = 0;j<arr.length-1-i;j++){ var temp; if(arr[j]>arr[j+1]){ temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } }
数组去重
//这里只用一种方式来实现 还有好多方法大家自己去看吧 function duplicateArr(arr){ var temp = []; for(var i = 0;i<arr.length;i++){ if(arr.indexOf(arr[i]) == i){ temp.push(arr[i]); } } return temp; }
html和html5的区别
1.文档声明不同
2.结构语义化不同
(很晚了后续在补充。。。)
以上是关于js常见的面试题的主要内容,如果未能解决你的问题,请参考以下文章