29道JavaScript基础测试题

时间:2019-11-05 15:44:35 类型:JS/JQUERY
字号:    

1、如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正返回的值是( )。
A、null
B、-1
C、0
D、undefined

2、JavaScript函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作。有关arguments说明错误的是( )。
A、arguments是个比较特殊的对象,使用者无需明确指出参数名即可访问到它们。
B、经常使用arguments的属性length来检测传递给函数的参数个数。
C、借助于arguments对象,我们可以模拟函数重载。
D、arguments是一个标准数组

3、with语句引入的根本原因在于( )。
A、用来临时扩展作用域链。
B、提高程序运行效率。
C、简化严格模式下代码的书写。
D、使用with语句的代码更易于优化。

4、有关this运算符说法不正确的是( )。
A、this运算符总是指向当前的对象。
B、在JS中,由于JS的动态性,this的指向在运行时才确定。
C、this关键字在Javascript中和执行环境,而非声明环境有关。
D、通过早期绑定可以实现对this的高度复用。

5、JavaScript中的错误可以分为语法错误和( )。
A、运行错误
B、不正常错误
C、形式错误
D、系统错误

6、有关JS中的异常处理,错误的结论是( )。
A、语法错误一般简称为错误(Error);而运行错误一般也叫做异常(Exception)。
B、JavaScript异常处理机制主要是通过try/catch/finally三子句联合实现的。
C、throw语句允许我们创建自定义错误。
D、try、catch和finally三个子句必须联合使用。

7、有关JS标签语句说法错误的有( )。
A、在Javascript中,标签是一个标准的有效的标识符(不能是保留字)。
B、标签声明可以放在任何一个语句(或者语句块)前面。
C、在目前ES5规则中虽然goto是Javascript的保留关键字,但是一般很少使用goto语句。
D、语句标签只有在它所起作用的语句内是有定义的。

8、有关循环语句说法正确的是( )。
A、ECMAScript规范指定for/in循环按照属性定义的先后顺序来枚举对象属性。
B、do/while循环最后必须使用分号结尾。
C、for循环中三个表达式中至少要存在一个,而且两个分号是必不可少的。
D、在计算循环表达式之前,while循环语句至少会执行循环体一次。

9、有关for循环语句说法错误的是( )。
A、for循环中三个表达式中的任何一个都可以忽略,但是两个分号是必不可少的。
B、for循环语句的初始化部分仅在循环开始之前执行一次。
C、for循环变量必须是数字类型。
D、for语句中的所有三部分(初始化部分、测试部分和更新部分)都是可选的。

10、有关if语句说法不正确的是( )。
A、if后面的条件必须使用括号包围。
B、有的if语句可以没有else部分。
C、if语句也支持嵌套。
D、else中语句的执行总是会匹配最外层的那个if语句中的条件判断。

11、有关switch语句的结论错误的是( )。
A、两个case不可共同使用一个break语句。
B、对每个case的匹配操作实际上是“===”恒等运算符比较,因此,表达式和case的匹配并不会做任何类型转换。
C、ECMAScript标准的确允许每个case关键字跟随任意的表达式。
D、如果在函数中使用switch语句,有时可以使用return来代替break

12、有关JS函数不正确的结论有( )。
A、定义函数时声明了多个参数,但调用时可以不使用它们。
B、函数体是由JavaScript语句组成的,必须用花括号括起来,即使函数体不包含任何语句。
C、在嵌套时,函数声明可以出现在所嵌套函数的顶部也可以出现在底部。
D、定义函数时,并不执行函数体内的语句,它和调用函数时待执行的新函数对象相关联。

13、有关函数声明语句和函数定义表达式区别错误的结论是( )。
A、函数声明语句创建的变量可以使用delete删除。
B、使用函数定义表达式定义的函数,只有变量(函数名)声明提前了——变量的初始化代码仍然在原来的位置。
C、函数声明语句中的函数被显式地“提前”到了脚本或函数的顶部。
D、都创建了新的函数对象,但函数声明语句中的函数名同时也是一个变量名,变量指向函数对象。

14、有关delete运算符正确的说法是( )。
A、delete可以用于删除任何对象属性。
B、delete不可以用于删除数组元素。
C、delete可以用于删除任何声明的变量
D、语句delete  obj1.x;中,delete用于删除对象obj1的属性x。

15、有关var语句的错误结论是( )。
A、var声明的变量有时可以通过delete删除的。
B、如果在顶层代码中使用var语句,它声明的是全局变量。
C、如果var语句出现在函数体内,那么它定义的是一个局部变量
D、var和function都是声明语句,用于声明或者定义变量或者函数。

16、有关JS变量说法错误的是( )。
A、循环语句中的变量不定是局部变量
B、多次声明同一个变量没有问题。
C、JS变量一旦定义就无法再重新定义。
D、var语句可用于声明或者定义一个或者多个变量。

17、有关in运算符错误的结论是()。
A、in运算符不可用于数组元素的遍历。
B、in运算符最主要和最典型的用途是:判断对象是否存在指定名称的属性。
C、如果in运算符右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true;否则,返回false。
D、in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象。

18、有关使用typeof运算符的不正确结论是( )。
A、typeof运算符后面的参数可以使用括号引起来,也可以不带括号。
B、typeof运算符只使用一个参数。
C、使用typeof运算符检测的返回结果值总是一个小写字符串形式。
D、typeof和instanceof有时可以相互代替。

19、使用instance运算符时正确的结论是( )。
A、表达式“{} instanceof Object;”没有任何问题。
B、instance运算符不包含对“父类”(或超类)的检测。
C、当instanceof的左操作数不是对象的话,instanceof不一定返回false。
D、instanceof的左操作数不可以是直接量形式;否则,JS系统认为语句表达不完整。

20、给定x=6以及y=3,下列结论正确解释了逻辑运算符的是( )。
A、x<10&&y>1为true
B、x==5||y==5为true
C、!(x==y)为false
D、!!x与x含义一样

21、如下不正确的结论是( )。
A、关系表达式的运算结果未必总是为true或fa1se
B、假值是false、null、undefined、0、-0、NaN和"";所有其他的值(包括所有对象)都是真值。
C、“&&”的操作数并不一定是布尔值。
D、关系运算符的优先级比“&&”和“||”要高

22、已知“var obj={a:"Hello"};”,于是“obj && obj.a; ”的结果是( )。A、'Hello'
B、null
C、true
D、false

23、有关各逻辑运算符错误的结论有( )。
A、!!X与X含义是一样的。
B、!总是返回true或者false。
C、如果||运算符计算结果为假值,那么再计算右侧的表达式,并返回这个表达式的计算结果。
D、语句“if(a==b) stop(); ”与语句“(a==b)&&stop();”表达含义一致。

24、有关下列各逻辑运算符的运算关系错误的是( )。
A、x==o&&y==o与(x==o)&&(y==o)等价
B、!(p&&q)===!p | !q;
C、!(p||q)===!p && !q;
D、!(p&&q)===!p || !q;

25、有关各逻辑运算符错误的结论有( )。
A、当“&&”右侧的表达式具有某种副作用的时候要格外小心。因为这些带有副作用的表达式的执行依赖于左操作数的计算结果。
B、实际开发中,JS逻辑与运算符“&&”不可能出现不会去计算右操作数的情形。
C、实际开发中,JS逻辑与运算符“||”可能出现不会去计算右操作数的情形。
D、实际开发中,JS逻辑与运算符“&&”可能出现不会去计算右操作数的情形。

26、已经“var a=[1,2,3,4,5];”,那么错误的是( )。
A、“1 in a;”结果是true。
B、delete用于删除一个数组元素时,数组长度并没有改变。
C、可使用“delete a['2'];”删除数组第三个元素。
D、可以使用“delete a[2];”删除数组第二个元素。

27、在Node命令行状态下已知“var o={x:1, y:2};”。不正确的结论是( )。
A、“typeof o.x;”将返回"number"。
B、“delete o.x;”可以删除对象o的属性x,而且返回值是true。
C、“delete o;”可以删除对象o。
D、“delete o.x;”将删除一个对象属性,返回true。

28、关于JS赋值操作符的结合性错误的结论是( )。
A、赋值操作符的结合性是从左至右。
B、“i=j=k="Hello Pomelo!";”的含义是把三个变量都初始化为"Hello Pomelo!"。
C、赋值操作符的结合性是从右至左。
D、赋值表达式的值就是右操作数的值。

29、正确的结论是( )。
A、"one"<3结果为true。
B、"111"<3结果为true。
C、"100"+200的结果是300。
D、加号运算符和比较运算符的行为都有所不同。加号运算符更偏爱字符串,而比较运算符则更偏爱数字。


参考答案:
1-5:D、D、A、D、A
6-10:D、C、B、C、D
11-15:A、C、A、D、A
16-20:C、A、D、D、A
21-25:A、A、A、B、B
26-29:D、C、A、D

<