JS-函数声明 和 函数表达式

问题:

      1, function foo() {};     

      2, var foo = function () {};

1,上面的语法是声明,可以提升,因此在函数定义的上方也可以调用

2,下面的语法是函数表达式,函数名是 foo (其实是变量名提升),提升的不是函数体

### 函数表达式也支持名字语法的

*********************************************

var foo  = function func() {

   console.log(func);       //在函数内部可以这样子用,把函数体打印出来

};

func(); //不能如此调用 

foo();

**********************************************

***函数有一个属性name,表示的是函数名,只有带有名字的函数定义,才会有name属性值,否则是 " "。

***但是,函数表达式的名字(函数的name属性),只允许在函数内部使用,(特殊)ie8允许访问。

**********************************************************************************

1,新的浏览器中,写在if while do-while 结构中的函数会转换为表达式,但是它又可以在外部调用(和上面的结论存在矛盾)


注:个人学习笔记

猜你喜欢

转载自www.cnblogs.com/xixiaijunjun/p/10080222.html