js练习题第15天 答案及解析

本篇文章是js基础练习题第十五天的答案及解析部分,纯题目部分请移步js基础练习题 第15天

正文

1.
(function foo(a, b, c = 5){}).length = ____________,
(function foo(x, ...y){}).length = ___________,
(function foo([a, b, c]){}).length = ___________,
(function foo(x, ...y, z){}).length = ___________。

答案:2、1、1、报错(SyntaxError

函数长度指的是函数形参中显式参数的个数,即除去默认参数、剩余参数之外的个数,且剩余参数(Rest parameter)必须位于末尾。


2.
1
2
3
4
var x = 1;
function f(x, y = x) {
console.log(y);
}
运行f(2)控制台将输出___________,运行f()控制台将输出___________。

答案:2、undefined


3.
1
2
3
4
5
let x = 1;
function f(y = x){
let x = 2;
console.log(y);
}
运行f(2)控制台将输出___________,调用f()控制台将输出___________。假设没有第一行的变量声明,则运行f()控制台将输出___________。

答案:2、1、报错(ReferenceError


4.试设计一个程序,能执行任意个数的加减法,如 1 + 23 + 5 + 0.20.5 - 3.5 + 3 - 8 等。

答案:如下代码块所示

1
2
3
4
5
6
7
8
9
10
11
// 方法一:利用扩展运算符
const sum = (…values) => {
return […values].reduce((prev, next) => prev + next);
}

// 方法二:利用arguments
function sum() {
return [].slice.apply(arguments).reduce(function(prev, next) {
return prev + next;
});
}


5.阅读以下代码:
1
2
3
4
5
6
7
var id = 123;
var handler = {
id: 456,
dosomething: function() {
console.log(this.id);
}
}
运行handler.dosomething()控制台将输出___________。
若把 dosomething改为dosomething: () => {console.log(this.id);}
则运行handler.dosomething()控制台将输出___________。

答案:456、123


6.
{} == {}的返回值为___________,Object.is({}, {})的返回值为___________,Object.is(NaN, NaN)的返回值为___________,+0 === -0的返回值为___________,Object.is(+0, -0)的返回值为___________。

答案:false、false、true、true、false



7.js一共有几种方法可以遍历对象的属性,试列举并指出区别。

答案:js一共有5种遍历对象属性的方法。

  • for...in:遍历自身和继承的可枚举属性(不含symbol属性)
  • Object.keys(obj):返回对象自身的所有可枚举属性(不含symbol属性)
  • Object.getOwnPropertyNames(obj):返回对象自身的所有属性(不含symbol属性)
  • Object.getOwnPropertySymbols(obj):返回对象自身的所有symbol属性
  • Reflect.ownKeys(obj):返回对象自身的所有属性

说明

  1. 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript
  1. 答案中,若有错误和需完善的地方,可在下方留言反馈哈~~

  2. 查看纯习题版,请点击js基础练习题 第15天

--本文结束 感谢阅读--
创作十分不易,原创更应鼓励