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() 方法:移除被选元素,包括所有的文本和子节点。