JavaScript函数foo1与foo2的区别及运行输出结果分析
两个JavaScript函数调用结果及核心差异分析
函数代码
foo1 代码
function foo1() { return { bar: "hello" }; }
foo2 代码
function foo2() { return { bar: "hello"; } }
调用输出结果
- 调用
foo1():正常执行,返回值为对象{ bar: "hello" },无任何报错。 - 调用
foo2():代码在解析阶段就会抛出SyntaxError(语法错误),完全无法执行。
核心差异原因
两个函数的差异完全来自对象字面量的语法规范合规性:
JavaScript中对象字面量的属性定义规则为:多个属性之间用英文逗号分隔,单条属性定义末尾不允许使用分号。
- foo1 完全符合对象字面量语法规范,属性
bar: "hello"末尾没有非法符号,整个对象表达式结束后带的分号是函数return语句的合法结束标记,可正常执行。 - foo2 中
bar: "hello"末尾错误使用了分号,违反了对象字面量的语法规则,JS引擎在解析代码时会直接识别到非法字符,抛出语法错误终止执行。
内容的提问来源于stack exchange,提问作者Kumar Shivam
相关产品推荐
相关产品推荐

