# 1.下列描述错误的选项是?(选择一项)

**A.**let是替代var用来声明变量的关键字

**B.**const是替代var用来声明常量的关键字

**C.**常量声明之后,不可以被重新赋值

**D.**变量声明之后,可以重新赋值

本题主要是考查常量和变量的概念。

var是ES6之前声明变量的关键字,ES6中使用let关键字替代了var声明变量,A选项错误。

ES6中新增的const关键字是用来声明常量,并不是用来替代var的,B选项错误。

常量声明之后,不可以被重新赋值,C是选项正确。

变量声明之后,可以重新赋值,D选项错误。

所以本题答案为B.

# 2.下面几段代码中,可以正常输出结果的是?(选择一项)

A.DPkIE9.png (opens new window)

B.DPkH9x.png (opens new window)

C.DPkLjO.png (opens new window)

D.DPkzEd.png (opens new window)

本题主要考查const的使用方式

const声明常量初始化时必须赋值,否则会报错,A选项错误。

const声明常量初始化后,不可以再重新赋值,B、C选项错误。

const声明常量为引用类型,不可以重新赋值,但可以修改里面的值。D选项正确,所以本题答案为D.

# 3.下图所示代码的运行结果是?(选择一项)

DPAP8P.png (opens new window)

**A.**100

**B.**undefined

**C.**报错

**D.**200

本题主要考查暂时性死区。

let声明的变量存在暂时性死区,暂时性死区的本质就是:在当前作用域,所要使用的变量已经存在,不会再访问该作用域以外的同名变量,并且只有在声明变量之后,才可以获取和使用该变量,否则就会报错。

本题代码中,在块级作用域中使用let声明v1,形成了暂时性死区,导致无法访问全局作用域中的同名变量v1,且输出语句是在声明变量的前面,会出现报错。所以本题答案为C.

# 4.下图所示代码,在ES6中属于块级作用域的是?(选择两项)

A.DPAmUs.png (opens new window)

B.DPAlvT.png (opens new window)

C.DPA3KU.png (opens new window)

D.DPAaP1.png (opens new window)

本题考查es6块级作用域的基本概念。

块级作用域是ES6中新增的一个作用域,指在大括号{}里面使用let或const关键字声明变量或常量,就会形成一个块级作用域。但有两个需要特殊记忆,函数和对象的大括号{}不属于块级作用域。 B选项中,是声明了一个函数,D选项中是声明了一个对象,都不属于块级作用域。所以本题答案为AC.

# 5.下图代码中,访问常量a时存在的作用域链,描述正确的是?(选择一项)

DPVEkj.png (opens new window)

**A.**块级作用域 –> 函数作用域 –> 全局作用域

**B.**函数作用域 -> 块级作用域 –> 函数作用域 –> 全局作用域

**C.**块级作用域 –> 块级作用域 –> 函数作用域 –> 全局作用域

**D.**函数作用域 -> 块级作用域 –> 块级作用域 –> 函数作用域 –> 全局作用域

# 6.关于模板字符串,下列说法错误的是?(选择二项)

**A.**模板字符串中嵌入变量,需要将变量名写在${}之中

**B.**模板字符串中嵌入变量,可以直接写变量名

**C.**模板字符串之中不能调用函数

**D.**模板字符串可以多行书写

参考解析:

本题主要考察模板字符串。

模板字符串中嵌入变量,需要将变量名写在${}之中,A选项正确,B选项错误。

模板字符串之中可以调用函数, C选项错误。

所以本题答案为BC.

# 7.下列代码中,箭头函数书写格式正确的选项是?(选择一项)

A.

DPVHCn.png (opens new window)

B.

DPZSUJ.png (opens new window)

C.DPZn5d.png (opens new window)

D.

DPZYVg.png (opens new window)

参考解析:

本题主要考查箭头函数的注意事项。

单行函数体省略了{}后,return关键字也必须省略, A选项是错误的。

单个参数可以省略(), 单行函数体可以省略{}和return关键字,B选项是正确的。

函数体是单行对象时,需要在{}外添加(),C选项是错误的。

多个参数时,不可以省略括号,D选项是错误的。

所本题答案为B.

# 8.下面代码中输出的结果是?(选择一项)

DPZOJA.png (opens new window)

**A.**obj window window

**B.**window undefined undefined

**C.**obj obj window

**D.**window obj window

本题主要考查的是普通函数中的this指向。

普通函数中this指向调用该函数的对象。

1、在全局作用域中,声明一个常量接收obj对象下的fn1函数,然后调用该函数,相当于window.res()方式调用,此时this指向window。

2、将test方法赋值给obj对象下的fn2, 之后通过obj.fn2形式调用,所以该方法内的this指向obj对象。

3、由于setTimeout函数中回调函数执行时没有指定调用对象,js语法中规定,默认是window对象调用的,所以this指向window。

所以本题答案为D.

# 9.观察下图,代码之中有几个this?(选择一项)

DPecOf.png (opens new window)

**A.**0

**B.**1

**C.**2

**D.**3

本题主要考察箭头函数中的this指向。

代码中只有一个this,就是函数foo的this,所以t1、t2、t3都输出同样的结果,因为所有的内层函数都是箭头函数,都没有自己的this,它们的this其实都是最外层foo函数的this。所以本题答案为B.

# 10.以下场景中,可以将函数声明为箭头函数的选项是?(选择一项)

**A.**声明一个函数,使用arguments计算传入参数的总和

**B.**声明一个函数,用来实例化对象

**C.**函数内部需要沿着作用域链向外查找this

**D.**使用call、apply或bind方法改变函数的this指向

参考解析:

本题主要考查箭头函数使用时的注意事项。

箭头函数内不存在arguments,A选项错误。

箭头函数没有自己的this,无法实例化对象,也无法使用call方法等改变this指向,但可以沿着作用域链向外查找this, BD选项错误,C选项正确。

所以本题答案为C.