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

本文解析了JavaScript中如何通过obj.log.call(console,this)改变this指向,并探讨了几个实例,包括setTimeout、函数作用域和DOM操作。重点讲解了reflow与repaint的区别,以及获取HTML元素数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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代码写到<script></script>之间
添加外部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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值