下面的代码在Browser和Node.js中会有所不同。
浏览器的结果为simple-scan 1090 0.0 0.1 4248 1432 ? S Jun11 0:00
。
Node.js的结果是a
。
b
虽然这种代码样式是反模式的,但代码仍然可以在环境中运行。
如何解释?
FYI。
Node.js环境链接: https://repl.it/CgWh
原生浏览器环境链接: https://repl.it/CgWj
这些链接可能不是永久性的。
答案 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());
块中的功能行为可能不同。上面的代码完全符合预期。