目录
1、iframe 的优缺点?
2、请你谈谈 Cookie 的弊端?
3、js 延迟加载的方式有哪些??
4、documen.write 和 innerHTML 的区别? ?
5、哪些操作会造成内存泄漏? ?
?6、解释 jsonp 的原理,以及为什么不是真正的 ajax?
7、javascript 的本地对象,内置对象和宿主对象 ?
8、字符串反转,如将 '12345678' 变成 '87654321' ?
9、将数字 12345678 转化成 RMB 形式 如:12,345,678
10、生成 5 个不同的随机数
1、iframe 的优缺点?
优点: 1. 解决加载缓慢的第三方内容如图标和广告等的加载问题 2. Security sandbox 3. 并行加载脚本 缺点: 1. iframe 会阻塞主页面的 Onload 事件 2. 即时内容为空,加载也需要时间 3. 没有语意
2、请你谈谈 Cookie 的弊端?
缺点: 1.Cookie 数量和长度的限制。每个 domain 最多只能有 20 条 cookie,每个 cookie 长度 不能超过 4KB,否则会被截掉。 2.安全性问题。如果 cookie 被人拦截了,那人就可以取得所有的 session 信息。即使加密 也与事无补,因为拦截者并不需要知道 cookie 的意义,他只要原样转发 cookie 就可以达 到目的了。 3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保 存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。
3、js 延迟加载的方式有哪些??
1. defer 和 async? 2. 动态创建 DOM 方式(创建 script,插入到 DOM 中,加载完毕后 callBack) 3. 按需异步载入 js
4、documen.write 和 innerHTML 的区别? ?
document.write 只能重绘整个页面 innerHTML 可以重绘页面的一部分
5、哪些操作会造成内存泄漏? ?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引 用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象 的内存即可回收。 1. setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。 2. 闭包 3. 控制台日志 4. 循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
?6、解释 jsonp 的原理,以及为什么不是真正的 ajax?
动态创建 script 标签,回调函数 Ajax 是页面无刷新请求数据操作
7、javascript 的本地对象,内置对象和宿主对象 ?
本地对象为 array obj regexp 等可以 new 实例化 内置对象为 gload Math 等不可以实例化的 宿主为浏览器自带的 document,window 等
8、字符串反转,如将 '12345678' 变成 '87654321' ?
思路:先将字符串转换为数组 split(),利用数组的反序函数 reverse()颠倒数组,再利用 jion() 转换为字符 串
var str = '12345678';
str = str.split('').reverse().join('');
9、将数字 12345678 转化成 RMB 形式 如:12,345,678
思路:先将数字转为字符, str= str + '' ; 利用反转函数,每三位字符加一个 ','最后一位不加; re()是自定义的反转函数,最后再反转回去
function re(str) {
str += '';
return str.split("").reverse().join("");
}
function toRMB(num) {
var tmp='';
for (var i = 1; i <= re(num).length; i++) {
tmp += re(num)[i - 1];
if (i % 3 == 0 && i != re(num).length) {
tmp += ',';
}
}
return re(tmp);
}
10、生成 5 个不同的随机数
思路:5 个不同的数,每生成一次就和前面的所有数字相比较,如果有相同的,则放弃当前生成的数
var num1 = [];
for(var i = 0; i < 5; i++){
num1[i] = Math.floor(Math.random()*10) + 1; //范围是 [1, 10]
for(var j = 0; j < i; j++){
if(num1[i] == num1[j]){
i--;
}
}
}
?
|