javascript|睡前做几道JavaScript理论练习题吧

1.请阅读以下代码

1
2
3
var obj = {};
obj.log = console.log;
obj.log.call(console,this);
该代码在浏览器中执行,输出的日志结果是什么?
undefined

window

console

obj

解析:call方法是用来改变this指向的,调用该方法的obj方法log中的this不再指向obj。没用明确指向的this都指向顶层对象window
2.执行下列选项的程序,输出结果不是Window对象的是()
setTimeout(function(){
console.log(this);
},1000);

function Star(){
console.log(this);
}
new Star();

var o = {
sayHi:()=>{
console.log(this);
}
}
o.sayHi();

(function(){
console.log(this);
}());
解析:new关键字this指向的都是关键字后面的对象哈,默认绑定与箭头函数指向的都是window
3.给网页添加JavaScript的方式有
使用script标签,将javascript代码写到之间

添加外部javascript文件

使用行内javascript

使用@import引入javascript文件

解析:@import用于引入css文件,import可以引入js
4.以下哪些操作会触发Reflow:
1
var obj = document.getElementById(“test”);
alert(obj.className)

alert(obj.offsetHeight)

obj.style.height = “100px”

obj.style.color = “red”

解析:
重排:reflow:几乎是无法避免的。现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显 示与隐藏)等,都将引起浏览器的 reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲 染。通常我们都无法预估浏览器到底会 reflow 哪一部分的代码,它们都彼此相互影响着。
重绘:repaint:如果只是改变某个元素的背景色、文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器 repaint(重绘)。repaint 的速度明显快于 reflow
5.如果想要获取整个网页文档中h1标签的个数,可以通过(B)
var hele=document.getElementByTagName('h1'); alert(hele.length);

var hele=document.getElementsByTagName('h1'); alert(hele.length);

var hele=getElementsByTagName('h1'); alert(hele.length);

var hele=getElementByTagName('h1'); alert(hele.length);

6.
1
2
var str1=new RegExp("e");
document.write(str1.exec("hello"));
以上代码输出结果为(A)
e

null

1

其他几项都不对

解析:exec是判断是否有那个数字,如果有的话,则返回这个数字;如果没有的话,返回false
7.
1
2
3
4
5
6
7
(function() {
var x=foo();
var foo=function foo() {
return "foobar"
};
return x;
})();
上面这段代码运行后的输出是
foo()

类型错误

undefined//选他!

foobar

【javascript|睡前做几道JavaScript理论练习题吧】

    推荐阅读