JavaScript 基础练习(三)
1.
下列哪些属性不是事件对象event的属性
A
clientX
B
offsetX
C
offsetLeft
D
target
正确答案: C
解析:
offsetLeft为元素针对offsetParent的水平坐标,并不是事件对象中的鼠标位置
下列关于事件委托说法错误的是
A
事件委托可以解决事件绑定程序过多的问题
B
事件委托利用了事件捕获原理
C
事件委托可以提高代码性能
D
事件委托可以应用在click,onmousedown事件中
正确答案: B
解析:
事件委托利用的是事件冒泡的原理
什么属性用于获取 HTML 文件的根节点
A
documentElement
B
rootElement
C
documentNode
D
documentRoot
正确答案: A
解析:
html文件的根节点为html,获取方式为document.documentElement
要求用JavaScript实现下面的功能:在一个文本框中内容发生改变后,单击页面的其他部分将弹出一个消息框显示文本框中的内容,下面语句正确的是
A
B
C
D
<input type="text"onClick=“alert(value)”>
正确答案: B
解析:
onchange事件,在文本框内容发生变化切光标离开时触发
下列哪些不是es6中新增的:
A
Objec.assign
B
Array.from
C
forEach
D
for of 循环
正确答案: C
解析:
forEach 是es5的
阻止事件冒泡,使用以下哪个方法
A
stopPropagation()
B
preventDefault()
C
cancelBubble = false
D
return false
正确答案: A
解析:
阻止浏览器默认行为,使用以下哪个方法
A
stopPropagation()
B
preventDefault()
C
cancelBubble = false
D
return true
正确答案: B
解析:
D
下列对象或数组的创建方式错误的是
A
var obj = { };
B
var obj = { [ ] }
C
var obj = [ { } ]
D
var obj = { age:30 }
正确答案: B
解析:
在HTML页面中,下列选项不属于鼠标相关事件的是
A
onclick
B
onmouseover
C
onmousedown
D
onchange
正确答案: D
解析:
下面哪个事件属性可以获取鼠标光标到页面可视区(浏览器边框)水平坐标
A
clientX
B
offsetX
C
pageX
D
screenX
正确答案: A
解析:
基本属性
要检测值是否为 NaN,应使用什么函数
A
Number()
B
parseInt()
C
whoisNaN()
D
isNaN()
正确答案: D
解析:
应记忆的方法
下面哪个方法可以匹配数组是否含有某个值
A
sort()
B
push()
C
join()
D
indexOf()
正确答案: D
解析:
以下选项中哪个是正则的量词 :
A
100
B
num
C
+
D
.
正确答案: C
解析:
+代表其前边的字符重复1~无限多次
以下属于正则的方法有
A
text()
B
replace()
C
test()
D
match()
正确答案: C
解析:
该方法用于检测参数字符串是否与正则表达式匹配
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
下列代码的执行结果为 function fn(){ console.log( this ) }; fn();
A
fn
B
undefined
C
window
D
windows
正确答案: C
解析:
直接调用函数,其内部的this指向全局对象window
html文档中怎么区分节点对象的节点类型
A
typeof
B
type
C
nodeType
D
nodeName
正确答案: C
解析:
nodeType 属性返回以数字值返回指定节点的节点类型。
如果节点是元素节点,则 nodeType 属性将返回 1。
如果节点是属性节点,则 nodeType 属性将返回 2。
如果是文本内容,则 nodeType 属性将返回 3。
下列代码的执行结果是 var arr = [1,11,2,22,3,4]; arr.sort(); document.write(arr);
A
1,11,2,22,3,4
B
1,2,3,4,11,22
C
22,11,4,3,2,1
D
报错
正确答案: A
解析:
arr.sort();直接用,不能对超过10以上的数字排序,所以会得:1,11,2,22,3,4
在Javascript语言中,当元素失去了焦点时激发的事件是
A
fouce
B
unload
C
mouseover
D
onblur
正确答案: D
解析:
onblur当失去焦点时候触发,聚焦是onfocus,和onblur相反的事件
下列代码的执行结果是 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的时候;
下列哪个不是Math对象的方法
A
sort()
B
floor()
C
random()
D
abs()
正确答案: A
解析:
sort()是数组的方法
使用 JavaScript 向网页中输出
hello
,以下代码中可行的是A
B
C
D
正确答案: B
解析:
document.write()方法可以打印节点到页面显示,参数是字符串,如有标签需要写完整。document.write(“
hello
”);正确下列代码的执行结果为
function fn(){
console.log("world")
};
fn();
var fn = “hello”;
A
“hello”
B
“world”
C
undefined
D
fn is not function
正确答案: B
解析:
var fn被提升到最用于最开始的位置
函数fn被提升
此时fn是函数,可以被执行,打印world
最后才给fn赋值为hello
如果今天是2006年5月14日,分析下列JavaScript代码运行后,在网页上显示()
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();
var date = now.getDate();
document.write(year+" “+month+” "+date);
A
2006 05 14
B
2006 5 14
C
2006 04 14
D
2006 4 14
正确答案: D
解析:
月份是从0开始计数的
下列代码输出的结果是
var y = 1;
var x = y = typeof x;
console.log(x);
A
undefined
B
1
C
y
D
报错
正确答案: A
解析:
在typeof x时,x只是被声明,但是没有被赋值
下列let声明变量说法有误的一项是
A
let在某个{}内部使用时,外部不能访问该let声明的变量
B
用 let 声明变量没有声明提升
C
let声明的变量, 变量声明之前该变量不可用,这种现象就称作暂时性死区;
D
let 不允许重复修改变量
正确答案: D
解析:
不允许修改的是常量
字符串的match方法的语法格式为:str.match(searchvalue) 或者 str.match(regexp),下列说法错误的是()注:RegExp是正则的构造函数
A
如果regexp参数不是RegExp对象,则需要首先把它传递给RegExp构造函数,将其转换为RegExp对象
B
函数的返回值存放匹配结果的数组。该数组的内容依赖于regexp是否具有全局标志g
C
全局匹配返回的数组的内容与非全局匹配返回的数组内容是一样的
D
代码’1abc2qwe3’.match(/\d+/g); 将找出字符串中的所有数字
正确答案: C
解析:
全局匹配时,返回所有与regexp匹配的内容,非全局匹配时,第一个元素为匹配内容,后面为分组捕获的内容
下列关于事件监听器的说法,错误的是
A
addEventListener第三个参数为false时,表示事件不会触发
B
IE8以下使用attachEvent添加事件监听器
C
addEventListener同一个事件可以绑定多个函数
D
IE8以下浏览器使用detachEvent移除监听器.
正确答案: A
解析:
addEventListener()的第三个参数为false时,代表冒泡阶段
给定正则表达式/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$/,满足此匹配条件的字符串是
A
“010”
B
“0010”
C
“127”
D
“10000”
正确答案: C
解析:
此题考查正则表达式中的选择语句
下列代码输出的结果是
function fn(a) {
console.log(a);
var a = 2;
function a() {};
console.log(a);
}
fn(2);
A
undefined和报错
B
function a() {}和2
C
报错和 2
D
undefined和function a(){};
正确答案: B
解析:
声明提升,var 要比 function 先提升。
二、多选题(不定项选择)(共20题,每题2分)
下面哪些是es6新增的
A
箭头函数
B
解构赋值
C
let关键字
D
class 定义类
正确答案: A,B,C,D
解析:
111
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
正则对象的方法包括
A
test();
B
index()
C
exec()
D
match()
正确答案: A,C
解析:
正则的对象方法只有2个,其他属于字符串的方法.
exec() 找到了返回数组,找不到返回null.
test() true或false.
对事件委托的说法正确的是
A
所有的事件都可以实现事件委托;
B
减少了事件绑定浏览器重绘的次数,提高了程序的执行效率;
C
减少事件的冗余绑定,节约了事件资源。
D
可以解决动态添加的元素节点无法绑定事件的问题;
正确答案: B,C,D
解析:
33
对事件绑定的说法正确的是
A
传统事件绑定(dom.onclick),不能同时绑定多个同一事件,后面的会覆盖前面的;
B
利用事件监听不能完成事件的绑定
C
addEventListener()方法可以实现事件的绑定
D
传统事件触发,只能经过冒泡阶段,不经过捕获阶段;
正确答案: A,C
解析:
1111
将字符串转成大写和小写的方法是
A
str.toSmallCase()
B
str.toLowerCase()
C
str.toUpperCase()
D
str.toUpperChars()
正确答案: B,C
解析:
以下表达式能生成1-10(包含1、10)间随机数的是
A
Math.floor(Math.random()*9)
B
Math.ceil(Math.random()*10)
C
Math.floor(Math.random()*10)+1
D
Math.floor(Math.random()*10)
正确答案: B,C
解析:
var a=“10”,以下能实现字符串转成数字的是
A
a*1
B
Number(a)
C
a-0
D
a+0
正确答案: A,B,C
解析:
下面哪些属于数组的方法
A
sort( )
B
push()
C
indexOf()
D
join()
正确答案: A,B,C,D
解析:
下面哪个不是数组的方法
A
map()
B
split()
C
filter()
D
test ()
正确答案: B,D
解析:
split 是字符串方法 test 是正则方法
更改h1标签内容可以用以下哪个属性
A
innerText
B
valueof
C
innerHTML
D
value
正确答案: A,C
解析:
aaa
字符串的操作方法有
A
indexOf
B
lastIndexOf
C
charAt
D
charCodeAt
正确答案: A,B,C,D
解析:
String.fromCodePoint(97) ===> a
String.fromCharCode( 65) ===> A
以下属于ES6新增内容的有
A
严格模式
B
箭头函数
C
解构赋值
D
class
正确答案: B,C,D
解析:
严格模式是ES5中就已经存在的。
但是在ES6的很多语法中,默认使用严格模式
事件对象中可以阻止事件冒泡的方法或属性为
A
e.stopPropagation()
B
e.preventDefault()
C
e.cancelBubble = true
D
event.returnValue = false
正确答案: A,C
解析:
B、D为阻止浏览器默认行为的
给元素添加事件监听正确的方法有
A
oDiv.onclick()
B
oDiv.attachEvent()
C
oDiv.addEventListener()
D
oDiv.detachEvent()
正确答案: B,C
解析:
A的正确用法为oDiv.onclick = function () {}
D为IE8接触事件绑定的方法
假设有一输入框的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()方法,错误
如何阻止事件冒泡
A
cancelBubble
B
return true
C
event.preventDefault
D
event.stopPropagation()
正确答案: A,D
解析:
浏览器有一些默认行为,比如右键菜单,点击跳转,文字选中效果,拖拽鬼影等,如果出现莫名其妙的问题,也可能是默认行为导致的,阻止默认行为:event.preventDefault和return false,阻止冒泡:cancelBubble和event.stopPropagation();。
拖拽效果中,需要用到的事件有
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
关于 window 对象表述正确的有
A
window.open 方法 可以弹出一个新窗口
B
window.location.reload()方法可以用来刷新当前页面
C
window.location.href="a.html"的作用都是把当前页面替换成 a.html 页面
D
定义了全局变量 g;可以用 window.g 的方式来存取该变量
正确答案: A,B,C,D
解析:
全部是window之中的方法
下面哪些方法不是正则的方法
A
search()
B
match ()
C
replace ( )
D
test ()
正确答案: A,B,C
解析:
ABC都是字符串方法