函数声明 和 函数表达式

定义函数的方法:

  1. 函数声明

  2. 函数表达式

  3.构造函数

   最常用的两个方法是函数表达式和函数声明

函数声明:

  1. 有一个特定的名称

function foo(){
}

  2. 在代码执行阶段已经可用(在上下文阶段创建)

foo();//输出'foo'
function foo(){ alert('foo'); }

  3. 位置:全局上下文中 或者 在一个函数体内

//直接在全局上下文中
function foo(){
  //2) 在一个函数体内   
  function foo2(){}   
}

函数表达式:

  1. 有可选的名称

//匿名函数赋给变量
var foo = function(){} //通过foo()进行调用
//函数表达式也可以有名称 var foo = function _foo(){} //外部通过foo()调用,而_foo()递归时候调用

  2.必须出现在表达式的位置

//圆括号内只能是表达式
(function foo(){});

//在数组初始化器内中只能是表达式
[function bar (){}];

//逗号只能是表达式
1,function foo(){};

//自执行表达式
(function(){}())//推荐自自执行函数写法
(function(){})()

//函数前面加上一元操作符号
+function foo(){};
-function foo(){};
!function(){};
~function(){};

    3.在代码执行阶段创建

foo();// foo is not function
var foo = function(){alert('1')}

var f = function (){alert('2')}
f()// 输出 '2'
原文地址:https://www.cnblogs.com/yangkangkang/p/7773425.html