JavaScript基础题、练习题、面试题(三)

1.下列哪些属性不是事件对象event的属性
A clientX
B offsetX
C offsetLeft
D target
正确答案: C
解析:
offsetLeft为元素针对offsetParent的水平坐标,并不是事件对象中的鼠标位置

2.下列关于事件委托说法错误的是
A 事件委托可以解决事件绑定程序过多的问题
B 事件委托利用了事件捕获原理
C 事件委托可以提高代码性能
D 事件委托可以应用在click,onmousedown事件中
正确答案: B
解析:
事件委托利用的是事件冒泡的原理

3.要求用JavaScript实现下面的功能:在一个文本框中内容发生改变后,单击页面的其他部分将弹出一个消息框显示文本框中的内容,下面语句正确的是
A
B
C
D
正确答案: B
解析:
onchange事件,在文本框内容发生变化切光标离开时触发

得分:2分
4.阻止事件冒泡,使用以下哪个方法
A stopPropagation()
B preventDefault()
C cancelBubble = false
D return false
正确答案: A
解析:

5.阻止浏览器默认行为,使用以下哪个方法
A stopPropagation()
B preventDefault()
C cancelBubble = false
D return true
正确答案: B
解析:
D

6.下面可以获取浏览器在卷动后,隐藏的文档部分的高度的属性是
A window.body.scrollTop
B document.body.scrollTop;
C document.scrolTop;
D documentElement.body.scrollTop
正确答案: B
解析:
基础属性

7.下列对的对常量的描述或定义不对的是
A 常量名只能用大写
B const PI = 3.11;
C const pi = 3.14
D 常量定义后不能被修改
正确答案: A
解析:

8.在HTML页面中,下列选项不属于鼠标相关事件的是
A onclick
B onmouseover
C onmousedown
D onchange
正确答案: D
解析:

9.下面哪个事件属性可以获取鼠标光标到页面可视区(浏览器边框)水平坐标
A clientX
B offsetX
C pageX
D screenX
正确答案: A
解析:
基本属性

10.JavaScript是运行在哪里的脚本语言
A server端(服务器端)
B web端(浏览器端)
C 在服务器运行后,把结果返回到客服端
D 在客户端运行后,把结果返回到服务器
正确答案: B
解析:
js就是运行在浏览器中的脚本语言。

11.要检测值是否为 NaN,应使用什么函数
A Number()
B parseInt()
C whoisNaN()
D isNaN()
正确答案: D
解析:
应记忆的方法

12.以下声明变量错误的是
A var a;
B let a;
C const a;
D function a;
正确答案: D
解析:
A为ES5声明变量,B、C为ES6声明变量/常量方式

D为错误选项

13.以下ES6字符串拼接中最推荐使用的是以下哪种写法?
A 今天天气+很好
B 今天天气${"很好"}
C 今天天气+ " 很 好 " ; D ‘ 今 天 天 气 + {"很好"}; D `今天天气+ "";D+{很好} `;
正确答案: B
解析:
模板字符串的使用

14.以下选项中哪个是正则的量词 :
A 100
B num
C +
D .
正确答案: C
解析:
+代表其前边的字符重复1~无限多次

15.以下能获取到所有子节点(包括文字节点)的属性是 :
A firstElementChild
B children
C childNodes
D attributes
正确答案: C
解析:
A、获取第一个元素节点

B、获取所有元素子节点

C、获取所有子节点,包含文本节点

D、获取所有属性节点

16.0.1+0.7 == 0.8 (0.1 + 0.7 计算结果是浮点数)
A true
B false
C Infinity
D NaN
正确答案: B
解析:
由于计算机存储数字的特点,导致浮点数的计算存在误差。

0.1+0.7 === 0.7999999999999999

所以结果为false

17.下列代码的执行结果为 function fn(){ console.log( this ) }; fn();
A fn
B undefined
C window
D windows
正确答案: C
解析:
直接调用函数,其内部的this指向全局对象window

18.以下正则中不可以验证数字的是
A /[0-9]/
B /\D/
C /0|1|2|3|4|5|6|7|8|9/
D /\d/
正确答案: B
解析:
\D匹配的是非数字

19.“hello”.repeat(3)的执行结果是
A hello
B hellooo
C helloooo
D hellohellohello
正确答案: D
解析:
repeat()的功能是将字符串重复参数指定的次数

20.html文档中怎么区分节点对象的节点类型
A typeof
B type
C nodeType
D nodeName
正确答案: C
解析:
nodeType 属性返回以数字值返回指定节点的节点类型。

如果节点是元素节点,则 nodeType 属性将返回 1。

如果节点是属性节点,则 nodeType 属性将返回 2。

如果是文本内容,则 nodeType 属性将返回 3。

21.下列代码的执行结果是 var result = 12 + 2 + “12”- 2 * 2; document.write(result);
A 1221222
B 14124
C 1408
D 2820
正确答案: C
解析:
var result = 12 + 2 + “12”- 2 * 2;

看等号右边,从左到右运算,

12+2等于14,

14+“12”等于“1412”(字符串拼接)

“1412”- 4 等于1408(减号会进行隐式转换)

22.下列代码的执行结果是 for(var i = 0;i<10;i++){} document.write(i);
A 10
B 11
C 9
D 死循环
正确答案: A
解析:
for(var i = 0;i<10;i++){}

document.write(i);

for循环结束,才会执行下一个语句,循环结束的条件就是i=10的时候;

23.下列哪个不是Math对象的方法
A sort()
B floor()
C random()
D abs()
正确答案: A
解析:
sort()是数组的方法

24.关于mouseenter的说法,正确的是
A 与mouseup效果相同
B 当鼠标指针进入元素时,会发生mouseenter事件
C 和mouseover完全没有区别
D 与mousemove效果相同
正确答案: B
解析:
和mouseover效果相同,但是比mouseover好,不会引起冒泡

25.下列代码输出的结果是var y = 1;var x = y = typeof x;console.log(x);
A undefined
B 1
C y
D 报错
正确答案: A
解析:
在typeof x时,x只是被声明,但是没有被赋值

26.下列let声明变量说法有误的一项是
A let在某个{}内部使用时,外部不能访问该let声明的变量
B 用 let 声明变量没有声明提升
C let声明的变量, 变量声明之前该变量不可用,这种现象就称作暂时性死区;
D let 不允许重复修改变量
正确答案: D
解析:
不允许修改的是常量

27.下列关于事件监听器的说法,错误的是
A addEventListener第三个参数为false时,表示事件不会触发
B IE8以下使用attachEvent添加事件监听器
C addEventListener同一个事件可以绑定多个函数
D IE8以下浏览器使用detachEvent移除监听器.
正确答案: A
解析:
addEventListener()的第三个参数为false时,代表冒泡阶段

28.下列关于window.onload事件的相关说法正确的是
A window.onload事件可能触发多次
B window.onload事件是指的 DOM结构加载完成之后
C window.onload 事件可以绑定多个处理函数,并且都会触发
D window.onload 事件在页面所有的内容都加载完毕之后才触发
正确答案: D
解析:
在文档装载完成后会触发 load 事件。此时,在文档中的所有对象都在DOM中,所有图片,脚本,链接以及sub-frames都完成了装载。

29.下面的代码段,执行后的输出结果是 var x=“15”; str=x+5; A=parseFloat(str); document.write(A);
A 20
B 20.O
C NaN
D 155
正确答案: D
解析:
字符串拼接 15 + 5 结果为 155 转换成数字

30.下列代码的执行结果为var fn = “hello”;fn();function fn(){ console.log(“world”)};
A “hello”
B “world”
C undefined
D fn is not function
正确答案: D
解析:
变量声明提升&函数声明提升之后,结果为

var fn;

function fn(){ console.log(“world”) };

fn = “hello”

fn()

此时fn已经是一个字符串,调用失败,报错

1.下列哪个选项可以阻止事件冒泡(考虑兼容情况)
A window.event.cancelBubble=true
B e.preventDefault()
C e.stopPropagation()
D window.event.cancelBubble=false
正确答案: A,C
解析:
兼容IE 和 高级浏览器

2.实现一个元素的拖拽,至少需要那几个事件,请选择
A onmousedown
B onmousemove
C onmouseup
D onmouseover
正确答案: A,B,C
解析:

3.下面表示定时器的有
A keyframes
B setInterval
C setTimeOut
D animate
正确答案: B,C
解析:
111

4.下面哪些是es6新增的
A 箭头函数
B 解构赋值
C let关键字
D class 定义类
正确答案: A,B,C,D
解析:
111

5.for…of与for…in的区别,以下说法正确的是
A for in可以遍历对象,for of不能遍历对象
B for of可以用来遍历map集合,for in不能遍历map集合
C for in遍历数组得到的是数组的下标,for of遍历数组得到的是数组的元素
D for in遍历键 for of遍历值
正确答案: A,B,C,D
解析:
ABCD

6.对事件委托的说法正确的是
A 所有的事件都可以实现事件委托;
B 减少了事件绑定浏览器重绘的次数,提高了程序的执行效率;
C 减少事件的冗余绑定,节约了事件资源。
D 可以解决动态添加的元素节点无法绑定事件的问题;
正确答案: B,C,D
解析:
33

7.对事件绑定的说法正确的是
A 传统事件绑定(dom.onclick),不能同时绑定多个同一事件,后面的会覆盖前面的;
B 利用事件监听不能完成事件的绑定
C addEventListener()方法可以实现事件的绑定
D 传统事件触发,只能经过冒泡阶段,不经过捕获阶段;
正确答案: A,C
解析:
1111

8.事件中会产生哪些兼容问题
A 事件对象的创建
B 事件冒泡
C 浏览器的默认行为
D 事件委托中事件源的获取
正确答案: A,B,C,D
解析:
222111

9.将字符串转成大写和小写的方法是
A str.toSmallCase()
B str.toLowerCase()
C str.toUpperCase()
D str.toUpperChars()
正确答案: B,C
解析:

10.var a=“10”,以下能实现字符串转成数字的是
A a*1
B Number(a)
C a-0
D a+0
正确答案: A,B,C
解析:

11.下面哪些是全局方法
A prompt()
B match()
C alert()
D confirm()
正确答案: A,C,D
解析:
uuu

12.下面哪些属于数组的方法
A sort( )
B push()
C indexOf()
D join()
正确答案: A,B,C,D
解析:

13.可以用来遍历字符串的语句有
A for-in
B for
C for-of
D forEach
正确答案: A,B,C
解析:
Array.prototype.forEach 为数组对象的方法,不能遍历字符串

14.给元素添加事件监听正确的方法有
A oDiv.onclick()
B oDiv.attachEvent()
C oDiv.addEventListener()
D oDiv.detachEvent()
正确答案: B,C
解析:
A的正确用法为oDiv.onclick = function () {}

D为IE8接触事件绑定的方法

15.以下字符串方法支持正则表达式的有哪些
A indexOf
B match
C replace
D search
正确答案: B,C,D
解析:
字符串的一些方法是和正则一起使用比较多的,比如match()匹配、replace()替换、search()查找

16.假设有一输入框的DOM名称为otxt,以下能获取输入框值(value)的是
A otxt.getAttribute(“value”)
B otxt.value
C otxt[“value”]
D otxt.getValue()
正确答案: A,B,C
解析:
getAttribute()是获取属性值的方法,因为value就是属性值,otxt.value和otxt[“value”]都可以获取属性值,所以ABC正确,D选项,没有getValue()方法,错误

17.拖拽效果中,需要用到的事件有
A onmousemove
B onmousedown
C onmouseup
D onclick
正确答案: A,B,C
解析:
拖拽的原理:按下的时候(onmousedown)通过鼠标的坐标和盒子的offsetLeft和offsetTop计算差值offsetX和offsetY;按着盒子拖拽的过程中(onmousemove)从新用新的坐标和刚才计算的差值计算新的left和top,这是拖拽的原理。所以得 :left=ev.clientX-offsetX; top=ev.clientY-offsetY;正确答案就是A B

18.下面哪些方法不是正则的方法
A search()
B match ()
C replace ( )
D test ()
正确答案: A,B,C
解析:
ABC都是字符串方法

19.判断str是否含有字符串"abc",以下不正确的是
A str.repl(/abc/)!=-1
B str.indexOf(‘abc’) >= 0
C str==‘abc’
D ‘abc’.includes(str)
正确答案: A,C,D
解析:
A选项:字符串没有index()方法,错误;

B选项:indexOf()就是检测数组是否含有某个数的,有返回下标,没有返回-1,正确选项

C选项:str=='abc’这个是检测完全匹配的,不能检测到是否包含有,这个写法要完全匹配才正确,所以错误

D选项:字符串没有includes()方法,这个方法是数组的方法,错误

20.解构赋值可以做到以下哪些事
A 一次性可以定义多个变量
B 可以作用在函数的传参上,以对象的方式传递,参数顺序也无须保持一致
C 可以轻松实现两个数的交换
D 可以实现一个函数返回多个结果
正确答案: A,B,C,D
解析:
122

你可能感兴趣的:(题库)