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.结构语义化不同

(很晚了后续在补充。。。)

猜你喜欢

转载自www.cnblogs.com/nianzhilian/p/10146911.html
今日推荐