JavaScript经典语法陷阱与面试题解析

作者:闭包旅人

时间:2026-10-28

浏览:512

本文整理了15道经典的JavaScript语法面试题,深入剖析函数声明提升、this指向、arguments对象、变量作用域及类型判断等核心概念。通过具体代码示例,揭示JavaScript中容易令人困惑的语法特性,帮助开发者避开常见陷阱,深入理解语言底层机制。

文章目录

JavaScript语法陷阱与面试题解析

本文源自知乎上分享的一组JavaScript相关试题,尽管发布时间较早,但题目极具代表性,充分展现了JavaScript语言中一些令人困惑且容易出错的语法特性。

题目1:arguments对象的类型

以下是具体的题目解析:

代码如下:

(function () {
return typeof arguments;
    })();
A. "object"
 B. "array"
 C. "arguments"
 D. "undefined"

答案:A

题目2:函数表达式与命名函数的作用域

2.

代码如下:

var f = function g() {
return 23;
            };
typeof g();
A. "number"
 B. "undefined"
 C. "function"
 D. Eorror

答案:D

题目3:函数参数与delete操作符

3.

代码如下:

(function (x) {
delete x;
return x;
})(1);
A. 1
 B. null
 C. undefined
 D. Error

答案:A

题目4:变量赋值与typeof的求值顺序

4.

代码如下:

var y = 1,
x = y = typeof x;
x;
A. 1
 B. "number"
 C. undefined
 D. "undefined"

答案:D

题目5:函数参数遮蔽与递归调用

5.

代码如下:

(function f(f) {
return typeof f();
})(function () {
return 1;
        });
A. "number"
 B. "undefined"
 C. "function"
 D. Error

答案:A

题目6:对象方法中的this指向与arguments

6.

代码如下:

var foo = {
bar: function () {
return this.baz;
            },
baz: 1
        };
(function () {
return typeof arguments[0]();
})(foo.bar);
A. "undefined"
 B. "object"
 C. "number"
 D. "function"

答案:A

题目7:函数作为值传递时的this绑定

7.

代码如下:

var foo = {
bar: function () {
return this.baz;
            },
baz: 1
        };
typeof (f = foo.bar)();
A. "undefined"
 B. "object"
 C. "number"
 D. "function"

答案:A

题目8:逗号运算符与函数声明提升

8.

代码如下:

var f = (function f() {
return "1";
}, function g() {
return 2;
        })();
typeof f;
A. "string"
 B. "number"
 C. "function"
 D. "undefined"

答案:B

题目9:if语句中的函数声明提升

9.

代码如下:

var x = 1;
if (function f() {}) {
x += typeof f;
 }
x;
A. 1
 B. "1function"
 C. "1undefined"
 D. NaN

答案:C

题目10:变量声明提升与typeof的双重应用

10.

代码如下:

var x = [typeof x, typeof y][1];
typeof typeof x;
A. "number"
 B. "string"
 C. "undefined"
 D. "object"

答案:B

题目11:标签语句与对象属性访问

11.

代码如下:

(function (foo) {
return typeof foo.bar;
        })({
foo: {
bar: 1
            }
        });
A、“undefined”
 B、“object”
 C、“number”
 D、Error

答案:A

题目12:函数声明提升与递归覆盖

12.

代码如下:

(function f() {
function f() {
return 1;
            }
return f();
function f() {
return 2;
            }
        })();
A、1
 B、2
 C、Error (e.g. “Too much recursion”)
 D、undefined

答案:B

题目13:构造函数返回非对象时的instanceof行为

13.

代码如下:

function f() {
return f;
    }
new f() instanceof f;
A、true
 B、false

答案:B

题目14:with语句与函数参数

14.

代码如下:

with (function(x, undefined){}) length;
A、1
 B、2
 C、undefined
 D、Error

答案:B

题目15:语法错误辨析

15.

代码如下:

以下哪条语句会产生运行错误:()
A.var obj = ();
B.var obj = [];
C.var obj = {};
D.var obj = //;

答案:A

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章