我有这段代码:
sayHi()
if (1) {
function sayHi() { alert(1) }
} else {
function sayHi() { alert(2) } // <--
}
它是如何运作的?函数在if / else块中定义。那么它们如何作用于if / else块之外呢?
答案 0 :(得分:1)
函数的范围是整个包含函数,因为函数声明被提升。但是,在执行if
或else
块之前,函数不会将其定义分配给它。它相当于:
var sayHi;
sayHi();
if (1) {
sayHi = function() { alert(1); };
} else {
sayHi = function() { alert(2); };
}
答案 1 :(得分:0)
一切都在Javascript的功能级别,而不是像大多数其他语言一样的块级别。因此,如果您在for循环中定义import {Header} from './Header.jsx';
,那么它就会被提升为#34;到包含函数的顶部。