本篇文章是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天