面试的解决:2017.7.28
试题
1,cookie,sessionstorge localstorage的区别和应用场景。
- 回答:大下,cookie:客户端和服务器端双向交互,sessionstorage和localstorage则不会,而且内存比较大。同是保存在浏览器中。sessionstorage会话缓存。关闭窗口就没有。localstorage关闭浏览器也一直存在===》那安全性问题呢。不要使用localStorage方式存储敏感信息
- 两者都是仅在客户端(即浏览器)中保存,不参与和服务器的通信,而且,sessionstorage不能多窗口的共享,而localstorage则可以多窗口共享。应用场景,
2,call apply bind的区别
回答:http://web.jobbole.com/83642/
- apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;apply是数组形式。
- apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
- apply 、 call 、bind 三者都可以利用后续参数传参;
- bind 是返回对应函数,便于稍后调用;apply 、call 则是立即调用
3,数组去重,取重 (js jq) 还有es6的数组去重。
es6 var arr = [1,2,3,5,2,1] [...new Set(arr)] es6 var arr = [1,3,1,4,1,5,6,3,1,2]; Array.from(new Set(arr)); js var acc = []; for(var i=0;i<arr.length;i++){ if(acc.indexof(arr[i])==-1){ acc.push(arr[i]) } return acc; } jq var yearArray = new Array(2009, 2009, 2010, 2010, 2009, 2010); $.unique(yearArray); $.unique()//函数通过搜索的数组对象,排序数组,并移除任何重复的节点
4,正则去除空格
var reg = /^\s*|\s*$/g; var str = ""; str.replace(reg, "")
5,js 二分法
6,统计最多字母数
var str = "ADBFDADDADD"; alert( str.split("D").length-1 );
var str="sssfgtdfssddfsssfssss"; function max(){ var json={}; for(var i=0;i<str.length;i++){ var k=str[i]; //k是所有字符,字符串也跟数组一样可以通过中括号下标 方法取到每个子元素 if(json[k]){ json[k]++; //json里有这个字符时,把这个字符的数量+1, } else{ json[k]=1; //否则把这个字符的数量设为1 }
} var num=0; var value=null; for(var k in json){ //s、f、g、t、d if(json[k]>num){ num=json[k]; value=k; } } alert("出现最多的字符是:"+value+',出现次数是:'+num); }; max(str);
7,伪数组,伪数组转换
8,jq动画实现,css3动画实现,cavas
9,数据的深复制,
10,实现一个函数clone 可以对javascript中的五种数据类型进行复制。
11,new操作符具体干了什么。
12,正则验证手机号。
** 13, jq对数组等的操作(去重,取重,动画,深入,封装,复制,)
14,原型问的还是比较多。
请使用手机"扫一扫"x
若有恒,何须三更睡五更起;最无益,莫过于一日曝十日寒