函数声明和变量声明

105 阅读1分钟
var a;
function a() {
}
console.log(a) // ƒ a() {}
function a() {
}
var a;
console.log(a)// ƒ a() {}
var a = 1;
function a() {}
console.log(a); // 1

函数声明会覆盖变量声明

————————————————————————————————
下面看看if/else里的函数声明

var a = 0;
if (true) {
  a = 1;
  function a() {}
  a = 21;
}
console.log(a); // 1

在ES2015环境中,块内的函数声明将作用于该块内


var a = 0;
if (true) {
  var a = 1;  // Uncaught SyntaxError: Identifier 'a' has already been declared
  function a() {}
  a = 21;
}
console.log(a);

这样会报错:// Uncaught SyntaxError: Identifier 'a' has already been declared




参考:www.itranslater.com/qa/details/…