js变量声明提升与函数表达式

1.变量声明提升

js引擎会把变量声明与函数声明都提升到当前函数的顶部。eg:

console.log('x' in window);//true
var x;
x = 0;

js引擎编译为

var x;
console.log('x' in window);//true
x = 0;

2.函数表达式

对于函数的声明有
var Foo = function(){}
function Foo(){}
前者为函数表达式,后者为函数声明
js会把函数表达式拆分为两行分别执行。例如:

var x=1;
function x(){}

执行时为先把函数表达式拆分,然后变量变量提升

function x(){}
console.log(x);
x=1

你可能感兴趣的:(js变量声明提升与函数表达式)