以下代码,声明语句会被提前到当前作用域(全局作用域和函数作用域)的顶部。但赋值语句不会提前,依然留在原地
var x = function(){};
var y = 123;
而函数的声明也会提前到作用域的顶部
function f(){}
对以上的总结就是:只要是声明(变量声明或函数声明)就会被提前,但赋值语句不会被提前
以下代码中的y所在的环境,是全局环境,而不是当前 new 所在的环境
new Function('return y');
以下代码,声明语句会被提前到当前作用域(全局作用域和函数作用域)的顶部。但赋值语句不会提前,依然留在原地
var x = function(){};
var y = 123;
而函数的声明也会提前到作用域的顶部
function f(){}
对以上的总结就是:只要是声明(变量声明或函数声明)就会被提前,但赋值语句不会被提前
以下代码中的y所在的环境,是全局环境,而不是当前 new 所在的环境
new Function('return y');