来源:JS的函数定义方式以及对声明的提前

以下代码,声明语句会被提前到当前作用域(全局作用域和函数作用域)的顶部。但赋值语句不会提前,依然留在原地

var x = function(){};
var y = 123;

而函数的声明也会提前到作用域的顶部

function f(){}

对以上的总结就是:只要是声明(变量声明或函数声明)就会被提前,但赋值语句不会被提前

以下代码中的y所在的环境,是全局环境,而不是当前 new 所在的环境

new Function('return y');
05-19 09:06