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

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

正文

1.

1
2
3
4
5
6
7
var tmp = 123;
function foo() {
console.log(tmp);
if(false) {
var tmp = 456;
}
}
运行foo()会在控制台输出__________,运行foo()的返回值是__________。

答案:undefinedundefined

if语句中的var声明会提升到函数内部开始位置,即等价于:

1
2
3
4
5
6
7
function foo() {
var tmp;
console.log(tmp);
if(false) {
tmp = 456;
}
}


2.
1
const PI;
console.log(PI);的返回值是__________。

答案:报错(SyntaxError

const声明必须进行初始化,即声明时必须显式赋值。

3.
1
2
const foo = {};
foo.name = "Jealyn";
执行完上面那段代码后,foo.name = __________ 。

答案:Jealyn

const声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的,只是变量标识符不能重新分配


4.
1
2
var a = 1;
let b = 2;
window.a = __________ , window.b = __________。

答案:1、undefined

var声明的全局变量会自动变为window对象的属性,而let声明的变量不会。


5.JS中一共有几种声明变量的方法?请简要叙述它们的区别。

答案:

  • 普通声明方式:varfunction,它们的典型特征是存在变量提升
  • 块级作用域:letconst,它们声明的变量都是具有块级作用域的,在一个块内不能重复声明,其中const声明时必须进行初始化操作
  • 模块变量:import,用于导入相应模块且可以修改变量名
  • 定义类:class,用于创建类

6.
1
let [head, ...tail] = [1, 2, 3, 4];
head = __________,tail = __________。

答案:1、[2, 3, 4]

1
let[x, y, ...z] = ["a"];
x = _________,y = _________,z = __________。

答案:”a”、undefined、[]

1
var [x = 1, y = undefined] = [null, 2];
x = __________,y = __________。

答案:null、2

关于解构赋值,请参看MDN 解构赋值

说明

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

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

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