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

时间:2016-07-27 05:31:40

标签: javascript node.js

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

浏览器的结果为simple-scan 1090 0.0 0.1 4248 1432 ? S Jun11 0:00

Node.js的结果是a

b

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

如何解释?

FYI。

这些链接可能不是永久性的。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

好的,所以我查看了你的代码,并在本机浏览器和nodeJS上进行了分析。据我所知,在节点中,第二个声明中具有相同名称的函数被覆盖但在本机浏览器javascript中不是这种情况。要进一步了解这两个环境的工作原理,请使用以下代码,您将看到不同之处:

if (1) {
    console.log('In condition 1');
    function foo() { 
        console.log('Inside first declaration');
        return 'a'; 
    }
} else {
    console.log('In condition 2');
    function foo() {
        console.log('Inside second declaration');
        return 'b'; 
    }
}

console.log(foo());

答案 2 :(得分:0)

if (1) {
    foo();
} else {
foo1();
}
function foo() { return 'a'; }
function foo1() { return 'b'; }
console.log(foo());

块中的功能行为可能不同。上面的代码完全符合预期。