1、(单项选择)对于下列程序运行结果,符合预期的是
function f1() {
console.time('time span');
}
function f2() {
console.timeEnd('time span');
}
setTimeout(f1, 100);
setTimeout(f2, 200);
function waitForMs(n) {
var now = Date.now();
while (Date.now() - now < n) {
}
}
waitForMs(500);
A、time apan:700.077ms B、time apan:0.066ms
C、time apan:500.077ms D、time apan:100.077ms
选择B,因为要f1要过100毫秒执行,f2要200毫秒执行,waitForMs是过500毫秒执行,因为JS是单线程,所以f1和f2执行几乎同时,所以开始时间和结束时间几乎接近,所以他们之间间距时间肯定很小,所以选择B,
对应题目
console.time('计时器');
for (var i = 0; i < 1000; i++) {
for (var j = 0; j < 1000; j++) {}
}
console.timeEnd('计时器');
答案:计时器: 2.371ms
2、(单项选择)请选择结果为真的表达式:B
A、null instanceof Object B、null == undefined
C、NaN == NaN D、false == undefined
3、(单项选择)下面程序的执行结果是:A
var name = 'World!';
(function () {
if (typeof name === ‘undefined’) {
var name = ‘Jack’;
console.log(‘Goodbye ‘ + name);
} else {
console.log(‘Hello ‘ + name);
}
})();
A、Goodbye Jack B、Hello Jack
C、Hello undefined D、Hello World
备注:如果 name = "Jack" 前面加var ,那就是name转成undefined,所以他们绝对等于
所以走第一个,如果不加申明,那'World!'=== "undefined"是false
所以走第二个
4、(不定项选择)以下关于DOM事件流的表述哪些是正确的 B,D
A、事件流包括两个阶段:事件捕获阶段、事件冒泡阶段。错误,中间再加目标阶段
B、IE跟标准浏览器对于DOM事件流实现不一样
C、假设parentEle是childEle的父节点,绑定事件:
parentEle.addEventListener(“click”, fn1, false)和
childEle.addEventListener(“click”, fn2, false),当点击childEle的时候fn1将先于fn2触发。
D、addEventListener第三个参数true代表支持捕获,false代表不支持捕获 备注:false是捕获
5、(不定项选择)通过下面的哪些方法可以获取页面的html元素 A,C,D
A、document.getElementById
B、document.getElementsByClassName
C、document.querySelector
D、document.querySelectorAll
6、(不定项选择)下面选项中,对javascript事件的描述不正确的是:C
A、IE使用attachEvent/detachEvent方法来添加和删除事件监听器;w3c使用addEventListener/removeEventListener方法。
B、IE是将event对象作为参数传递给监听器,w3c事件监听器内使用的是一个全局的Event对象。
C、IE提供了对事件捕获阶段的支持。错误,备注IE9以上支持
D、要停止事件的传递,IE的做法是设置event对象的cancelBubble为true,而w3c的做法是设置执行stopPropagation方法。
7、(单项选择)
var array1 = [1,2];
var array2 = array1;如果改成 var array2 = [1,2]
array1[0] = array2[1];
array2.push(3);
console.log(array1);
console.log(array2);
执行上面的代码array1和array2的值分别是什么?C
A、Array1的值为[2,2];Array2的值为[1,2,3]
B、Array1的值为[2,2,3];Array2的值为[1,2,3]
C、Array1的值为[2,2,3];Array2的值为[2,2,3]
D、Array1的值为[1,2,3];Array2的值为[1,2,3]
备注:如果改成var array2 = [1,2],那么是A
8、(不定项选择)有如下代码:
function Test(name,age){
this.name = name;
this.age = age;
};
Test.prototype = {
name:’aliyun’,
hasOwnproperty:function(){
return false;
}
};
var instance = new Test(‘alibaba’,102);
以下关于原型链的说法正确的是: A ,C
A、JavaScript对象有两种不同的属性,一种是对象自身的属性,另一种是继承于原型链上的属性
B、instance.name == ‘aliyun’为true
C、instance.hasOwnproperty(‘age’)结果将是false
D、所有对象都继承自Object.prototype 备注:Object.prototype为null
9、实现函数range([start,]stop[,step])返回一个数组(step大于1)D
A range(1,11); => [1,2,3,4,5,6,7,8,9,10]
B range(0); => []
C range(10); => [0,1,2,3,4,5,6,7,8,9]
D range(0,30,5); => [0,5,10,15,20,25]
10、有一个包含数据列表的页面,数据行数不确定。每一行数据都有一个删除按钮,单击删除按钮删除该列数据,请用JavaScript实现该功能。
<script> var oUl = document.createElement('ul'); oUl.id="oul"; var str=""; for(var i=0;i<10;i++){ str+="<li>cjakcsk<span class="shanchu">删除"+i+"</span></li>"; var spanli=document.getElementsByTagName("span"); }; oUl.innerHTML=str; document.body.appendChild(oUl); var liSpanObj=oUl.querySelectorAll("span"); for(var i=0;i<liSpanObj.length;i++){ //第一方法 liSpanObj[i].index = i; liSpanObj[i].onclick=function(){ oUl.removeChild(liSpanObj[this.index].parentNode); } //第一个方法 (function(k){ liSpanObj[i].onclick=function(){ var li=liSpanObj[k].parentNode; oUl.removeChild(li); })(i); } </script>