function parent() {
console.log("parent");
function child() {
console.log("child1")
}
return child();
function child() {
console.log("child 2")
}
}
parent();
输出为:parent和child2
为什么不是child1,而是child2被打印出来了?
function parent() {
console.log("parent");
function child() {
console.log("child1")
}
return child();
function child() {
console.log("child 2")
}
}
parent();
输出为:parent和child2
为什么不是child1,而是child2被打印出来了?
3条答案
按热度按时间iswrvxsc1#
第二
child()
覆盖第一个。因此child 2
在控制台中打印。如果您添加另一个(第三个)
child
方法,则该方法将运行。fkaflof62#
在js中,如果您编写的函数与前面的函数同名。js将重新定义函数,在之后使用函数。这是覆盖
ego6inou3#
function declarations
在实际开始执行代码之前,将被提升(移到顶部)。所以想象一下,在执行到达return语句之前,child1和child2函数都位于顶部。比如:
而且,这里的child2函数覆盖了child1函数,所以返回child2。