JavaScript 疑难、易错笔试选择题+分析

1.以下代码执行时不会在控制台输出错误信息的是:B

A. 		let a = decodeURIComponent('%');
B.
		var a;
		a();
		function a() {
   
		console.log(a);

C.

		Promise.reject(123).finally(a => {
   
		console.log(a);
			});
		}
D.
		var a = 1;
		let a = 2;
		console.log(a);

分析B:

  • js有变量提升和函数提升,指的是用 var声明变量 或用 function 函数名(){ } 声明的,会在 js预解析 阶段提升到顶端;(es6的let 和 const 不会提升)
  • 函数提升优先级 高于 变量提升
  • 相同作用域时声明变量而不赋值则还是以前的值, 而子作用域声明不赋值则函数内该值为undefined,因为声明了私有变量

2.下面的语言中哪些语言是动态语言( JavaScript )

解释:

在这里插入图片描述

3.下列函数哪些是JavaScript的全局函数?( A、B、D )

A.encodeURI
B.parseFloat
C. setTimeout
D.eval

分析:setTimeout()是宿主环境提供的

JS全局函数:

个人记忆方法:6(编码相关)+ 2(数据处理)+ 4(数字相关)+ 1(特殊)

  • 编码相关:
    escape()、unescape()、encodeURI()、decodeURI()、
    encodeURIComponent()、decodeURIComponent()
  • 数据处理:
    Number()、String()
  • 数字相关:
    isFinite()、isNaN()、parseFloat()、parseInt()
  • 特殊:
    eval()

4.判断对象myObj是否存在的写法,下面说法错误的是( C)

A. typeof myObj == “undefined”
B. myObj === undefined
C. myObj === null
D.!this.hasOwnProperty(‘myObj’)

5.有var d = new Date(‘2018-05-09’),可以设置为6月份的操作是?(C、D)

  • d.setMonth(7);
  • d.setMonth(6);
  • d.setMonth(5);
  • d.setDate(40);

setDate()参数分析:

n表示一个月中的一天的一个数值(1 ~ 31):
0 为上一个月的最后一天
-1 为上一个月最后一天之前的一天
如果当月有 31 天:
32 为下个月的第一天
如果当月有 30 天:
32 为下一个月的第二天;
40 为下一个月的第9天;

6. JavaScript定义var a=“40”,var b=7,则执行a%b会得到(5)。

分析:使用-,/,*,% a都会隐式转换为数字类型。

注意:+号,数字隐式转换成字符串。其余的运算符号是字符串隐式转换成数字

7.关于 javascript 模块化,下列描述错误的是(B)。

  • AMD推崇依赖前置,CMD推崇依赖就近
  • Sea.js遵循AMD规范,RequireJS遵循CMD规范
  • 主流的模块化包括CommonJS,AMD,CMD等
  • 模块化有利于管理模块间的依赖,更依赖模块的维护

分析:AMD和CMD都是浏览器端的js模块化规范,分别由require.js和sea.js实现。 CommonJS是服务器端的js模块化规范,由NodeJS实现。

个人记忆法:

  • 看AMD、CMD的首字母,26位字母,A在C前面,所以AMD是依赖前置,CMD是依赖就近。
  • 同样require.js、sea.js,看首字母,r在s前面。所以require.js是AMD的实现方式。

首字母前的对应”前“

8. 以下结果里,返回true的是?

  • !![]
  • !!{}
  • []==0
  • null==undefined

9. 以下代码执行后,array的结果是?

var array=[-1,1,3,4,6,10];
array.sort((a,b)=>Math.abs(a-3)-Math.abs(b-3));

结果:[3,4,1,6,-1,10]

分析:
sort() 方法用于对数组的元素进行排序,参数决定排序的顺序。

  • 原数组var array=[-1,1,3,4,6,10];
  • 参数(a,b)=>Math.abs(a-3)-Math.abs(b-3):即数值减3的绝对值[4,2,0,1,3,7]作为参数决定排序。
  • 根据绝对值减3大小排列[0,1,2,3,4,7],对应的原数组排序后为[3,4,1,6,-1,10]

10. es6中的export、import用法

详细用法可看MDN:

11.this对象的理解正确的是 (A、B、D)

  • A.在不手动改变this指向的前提下,this总是指向函数的直接调用对象
  • B 如果有new关键字,this指向new出来的那个对象
  • C this总是指向函数的非间接调用者
  • D IE中attachEvent中的this总是指向全局对象window

12.JavaScript的typeof运算符的可能结果:(symbol、boolean、undefined、string)

13.以下表达式不会出现错误的有(B、C、D)

  • A、2.toString()
  • B、2…toString()
  • C、2 .toString()
  • D、(2).toString()

14.在很多时候,我们需要给网页中的一些元素不停的切换样式,那么要怎样实现给元素删除一个样式的同时,添加另外一个样式( A )

A:

$('#ele').removeClass('className');
$('#ele').addClass('ClassName');

B:

$('us').removeClass('className');
$('us').addClass('ClassName');

C:

$('.us').removeClass('className');
$('.us').addClass('ClassName');

D:

$('us').remove('className');
$('us').add('ClassName');

本题考察JQuery中选择器的知识。
常用有三种:
①元素选择器:$(“TagName”)
②ID 选择器: KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲ID") ③类选择器:(".className")

个人看法解析:
A:正确。
B:错误。选项使用元素选择器,但是 HTML 中没有 us 标签(不考虑自定义标签这种特殊情况)
C:错误。选项使用类选择器,看起来是正确的。但, 若删除类选择器 className 就是 .us,就无法再通过 $(’.us’).addClass(‘ClassName’) 给该元素添加样式了
D:错误。add() 方法:把元素添加到已存在的元素组合中。 remove() 方法:移除被选元素,包括所有的文本和子节点。

15.在jquery中,如果想要获取当前窗口的宽度值,下面哪个是实现该功能的?(width())

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值