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" ));
|
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理论练习题吧】
推荐阅读
- 排序算法|JS优化版(二叉搜索树第k大节点)
- vue.js|Vue练习题--不定时分享
- Linux|Linux Shell脚本实现自动交互
- java|Java并发编程—生产者消费者Java实现
- java|Java并发编程—ThreadLocalRandom类
- Java知识点|Java判定相等---==和equals()和“compareTo()”
- GWAS|颜值即正义 | 只知道qqman而不知道cmplot是不专业的
- JS DY6 数组
- js dy5 (函数,事件,对象)