# 2020 / 3 / 21
自结题
# 1 / 什么是 'use strict'? 使用它的好处和坏处分别是什么?
ECMAScript5 添加了第二种运行模式:严格模式。顾名思义,这种模式使得Javascript在更严格的条件下运行
设立严格模式的目的,主要有以下几个:
- 消除Javascript语法的一些不合理,不严谨之处,减少一些怪异行为
- 消除代码运行的一些不安全之处,保证代码运行的安全
- 提高编译器效率。增加运行速度
- 为未来新版本的Javascript做好铺垫
缺点:现在的网站的Js都会进行压缩,一些文件用了严格模式,而另一些没有。这时这些本来是严格模式的文件,被合并后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节
# 2 / Flash、Ajax各自的优缺点,在使用中如何取舍?
- Flash
- Flash 适合处理多媒体,矢量图形,访问机器
- 对Css,处理文本上不足,不容易被搜索
- Ajax
- Ajax对Css,文本支持很好,支持搜索
- 多媒体,矢量图形,机器访问不足
- 共同点:
- 与服务器的无刷新传递消息
- 可以检测用户离线和在线状态
- 操作DOM
# 3 / 请实现Javascript中的indexOf功能,判断一个字符串a中是否包含另一个字符串b
- 如果包含,需要返回匹配字符串b的位置
- 如果不包含,需要返回-1
function indexOf(str, subStr){
var result = str.match(subStr)
return result ? result.index : -1
}
1
2
3
4
2
3
4
# 4 / 请给Array本地对象添加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组
Array.prototype.distinct = function(){
var result = []
for(var i = 0; i < this.length; i++){
for(var j = i + 1; j < this.length ;){
if(this[i] === this[j]){
result.push(this.splice(j, 1)[0])
}else{
j++
}
}
}
return result
}
alert(['a','b','c','d','b','a','e'].distinct())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 5 / 请编写一个通用的事件处理函数
function addEvent(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false)
}else if(element.attachEvent){
element.attachEvent('on' + type, handler)
}else{
element['on' + type] = handler
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 6 / 请编写一段Js脚本生成下面这段Dom结构(使用标准的Dom方法或属性)
<div id='example'>
<p class='slogan'>淘你喜欢</p>
</div>
1
2
3
2
3
Js实现:
window.onload = function(){
var div = document.createElement('div')
div.id = 'example'
var p = document.createElement('p')
p.className = 'slogan'
p.innerHTML = '淘!你喜欢'
div.appendChild(p)
document.body.appendChild(div)
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9