javaScript中本地定义函数的范围

时间:2017-02-12 05:55:28

标签: javascript

我有这段代码:

sayHi()

if (1) {
  function sayHi() {  alert(1)  }
} else {
  function sayHi() {  alert(2)  } // <--
}

它是如何运作的?函数在if / else块中定义。那么它们如何作用于if / else块之外呢?

2 个答案:

答案 0 :(得分:1)

函数的范围是整个包含函数,因为函数声明被提升。但是,在执行ifelse块之前,函数不会将其定义分配给它。它相当于:

var sayHi;
sayHi();

if (1) {
    sayHi = function() { alert(1); };
} else {
    sayHi = function() { alert(2); };
}

答案 1 :(得分:0)

一切都在Javascript的功能级别,而不是像大多数其他语言一样的块级别。因此,如果您在for循环中定义import {Header} from './Header.jsx'; ,那么它就会被提升为#34;到包含函数的顶部。