本篇文章是js基础练习题第十天的答案及解析部分,纯题目部分请移步js基础练习题 第10天
正文
1.分析以下代码:
1 | var name = "Window"; |
object.getName = __________,object.getName() = __________,object.getName()() = __________,getName()() = __________,答案:f(){return function(){return this.name;}}、f(){return this.name;}、Window、报错(ReferenceError)
getName函数修改成1 | getName: function() { |
object.getName()() = __________。答案:Object
该题目想考察的就是JS中this绑定与失绑的问题,具体可查看这篇文章。
2.请简述IIFE的作用和声明方法。
IIFE是Immediately Invoked Function Expression的简称,意为立即执行的函数表达式,即立即执行函数,IIFE通常用来模拟私有作用域,将只使用一次的函数通过IIFE的形式调用,来大大节省资源占用;其声明方式为:1
2
3
(function functionName(i) {
//your code
})(i);
1 | (function functionName(i) { |
3.运行下列代码,将在控制台输出__________:
1 | console.log(a); |
答案:报错(ReferenceError)
let方式声明的变量不存在变量提升。
4.
1 | function foo(x = y, y = 2) { |
foo()的返回值为__________。答案:报错(ReferenceError)
在函数参数解析中,是按照从左向右的顺序进行解析的,当将y赋给x时,因此时y并为声明,故报错。
5.
1 | function bar(x = "2", y = +x) { |
bar()的返回值为__________。答案:"22"
函数执行后,x = "2", y = 2, 此时的+为拼接操作符。
6.分析下列代码的运行结果:
1 | function bar(x, y) { |
bar("hello", "world");的返回值是__________。报错(SyntaxError)
由于在函数参数中已经声明了x,在函数内再进行let声明已然重复,故会报错Identifier 'x' has already been declared,提示x已声明。
说明
- 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
答案中,若有错误和需完善的地方,可在下方留言反馈哈~~
查看纯习题版,请点击js基础练习题 第10天

