Native浏览器和Node.js中的JavaScript函数声明会得到不同的结果

Hus*_*sky 5 javascript node.js

下面的代码将在Browser和Node.js中有所不同.

浏览器的结果是a.

Node.js的结果是b.

if (1) {
    function foo() { return 'a'; }
} else {
    function foo() { return 'b'; }
}

console.log(foo());
Run Code Online (Sandbox Code Playgroud)

虽然这种代码样式是反模式的,但代码仍然可以在环境中运行.

怎么解释呢?


仅供参考.

这些链接可能不是永久的.

Gat*_*ill 2

Javascript 引擎不会以相同的方式提升 javascript 函数,因此您可以预期浏览器/节点之间会有不同的行为。

一个例子: http: //statichtml.com/2011/spidermonkey-function-hoisting.html