全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页

JS函数与作用域专题测试

20 题 45 分钟 难度:

考察知识点

  • 函数定义与调用:函数声明、函数表达式、Function构造函数、函数提升机制
  • 参数传递:基本类型与引用类型传参、默认参数、arguments对象、剩余参数
  • 返回值:return语句、返回值类型、无return时的默认返回值
  • 作用域与变量提升:全局作用域、函数作用域、块级作用域、var/let/const区别、暂时性死区
  • 闭包:闭包定义与原理、闭包应用场景、循环中的闭包问题、IIFE、内存管理
  • 箭头函数:箭头函数语法、this绑定特性、与普通函数的区别
1
单选题

以下哪种方式可以定义一个 JavaScript 函数?

A

var fn = new Function('a', 'b', 'return a + b');

B

function fn = (a, b) => { return a + b; }

C

def fn(a, b) { return a + b; }

D

fn(a, b) -> { return a + b; }

2
单选题

以下代码输出结果是什么?

JavaScript
function changeValue(x) {
    x = 10;
}
let a = 5;
changeValue(a);
console.log(a);
A

5

B

10

C

undefined

D

报错

3
单选题

以下代码输出结果是什么?

JavaScript
function greet(name) {
    console.log("Hello, " + name);
}
let result = greet("World");
console.log(result);
A

"Hello, World"

B

undefined

C

null

D

""

4
单选题

以下代码输出结果是什么?

JavaScript
console.log(a);
console.log(b);
var a = 1;
let b = 2;
A

undefined, 2

B

1, 2

C

undefined, ReferenceError

D

ReferenceError, ReferenceError

5
单选题

以下代码输出结果是什么?

JavaScript
console.log(foo);
console.log(bar);
function foo() { return 1; }
var bar = function() { return 2; };
A

function foo(){ return 1; }, undefined

B

function foo(){ return 1; }, function bar(){ return 2; }

C

undefined, undefined

D

ReferenceError, ReferenceError

6
单选题

以下代码输出结果是什么?

JavaScript
function createCounter() {
    let count = 0;
    return function() {
        return ++count;
    };
}
let counter = createCounter();
console.log(counter());
console.log(counter());
A

0, 0

B

1, 1

C

1, 2

D

undefined, undefined

7
单选题

以下代码输出结果是什么?

JavaScript
const obj = {
    name: 'test',
    fn: () => console.log(this.name),
    fn2: function() { console.log(this.name); }
};
obj.fn();
obj.fn2();
A

test, test

B

undefined, test

C

test, undefined

D

undefined, undefined

8
单选题

以下哪个箭头函数语法是正确的?

A

const fn = (x) => { return x * 2 };

B

const fn = x => x * 2;

C

const fn = (x, y) => x + y;

D

以上都正确

9
判断题

函数声明会被提升到作用域顶部,而函数表达式不会。

A

B

10
判断题

ES6 可以使用默认参数语法 function fn(a = 1, b = 2) 为参数设置默认值。

A

B

11
判断题

函数执行到 return 语句时会立即停止,return 后面的代码不会执行。

A

B

12
判断题

let 和 const 声明的变量在声明前访问会报 ReferenceError,这是因为存在暂时性死区(TDZ)。

A

B

13
判断题

箭头函数的 this 绑定在定义时就确定了,无法通过 call、apply、bind 改变。

A

B

14
填空题

使用函数声明定义名为 add 的函数,语法为 ________________________;使用函数表达式定义,语法为 ________________________

15
填空题

在函数内部,可以使用 _________ 对象访问所有传入的参数;ES6 中使用 _______ 剩余参数语法收集多余参数,剩余参数是一个真正的 ______

16
填空题

函数通过 ______ 语句返回值,可以返回 ________ 的值(包括对象、数组、函数等)。如果函数没有 return 语句,默认返回 _________

17
填空题

JavaScript 有三种作用域:______________________________。var 声明的变量会提升到 __________ 顶部,let 和 const 声明的变量存在 __________

18
多选题

关于 JavaScript 变量声明,以下说法正确的是?

A

var 声明的变量具有函数作用域

B

let 声明的变量具有块级作用域

C

const 声明的变量必须初始化

D

var 声明的变量可以重复声明

19
多选题

关于闭包,以下说法正确的是?

A

闭包可以访问外部函数的变量

B

闭包会保持对外部变量的引用,可能导致内存泄漏

C

闭包常用于数据私有化和函数工厂

D

闭包只能在函数内部创建

20
多选题

关于箭头函数,以下说法正确的是?

A

箭头函数没有自己的 this

B

箭头函数不能用作构造函数

C

箭头函数没有 arguments 对象

D

箭头函数可以用作方法定义

← 上一个试卷 JS中级技能认证
下一个试卷 → JS初级技能认证

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库