javascript中提升操作对函数声明和函数表达式的区别

首先,函数声明和函数表达式的区别如下:

//函数声明
function foo(){}
//函数表达式
(function foo(){})()
//函数表达式
var foo = function(){};

在使用函数声明时,提升的过程如下:

foo();//function foo success
function foo(){console.log('function foo success');}
====>(等价于)
function foo(){console.log('function foo success');}
foo();//function foo success

在使用函数表达式时,提升的过程如下

foo();//TypeError
var foo = function(){};
====>
var foo;
foo();//TypeError
foo = function(){};
foo();//TypeError
bar();//ReferenceError
var foo = function bar(){};
====>
var foo;
foo();//TypeError
bar();//ReferenceError
foo = function(){
     var bar = self;//类似于这样的格式
};

猜你喜欢

转载自blog.csdn.net/weixin_34161032/article/details/90771893