function a(){}
typeof a; // function
typeof b; // function
function b(){}
函数表达式
不能变量提前 -> undefined
var c = function (){};
typeof c; // function
typeof d; // undefined
var d = function (){};
注意表达式右边为 undefined
var e = function f(){};
typeof e; // "function"
typeof f; // "undefined"
函数构造式
不能变量提前 -> undefined
var test = new Function('name','alert("hello,"+name)');
//最末尾的是函数体,其前面的都是参数
//函数调用
test('world');
typeof fun1; //undefined
var fun1 = new Function('name','alert("hello,"+name)');
var fun2 = new Function('name','alert("hello,"+name)');
typeof fun2; //function
区别
1.函数声明必须包含名称,函数表达式可以省略名称。 2.函数声明有位置限制,不能出现在条件语句、循环语句或其他语句中,而函数表达式没有位置限制,可以出现在语句中实现动态编程。 3.函数声明会先于函数表达式被提升至作用域的顶部,因此用函数声明创建的函数可以在声明之前被调用,而函数表达式必须在表达式之后才能被调用
函数声明式
可以变量提前
函数表达式
不能变量提前 -> undefined
注意表达式右边为 undefined
函数构造式
不能变量提前 -> undefined