- myfun:function(){} 是必须写在对象内部的,是一个对象的方法,如:
var obj = {
myfun:function(){}
}
写在外面会报错。
-
var myfun = function(){} 意思是把一个匿名的函数表达式复制给了变量myfun,和 function myfun(){} 声明的方法差别不大,但还是有差别的。
JS在解析的过程中,会把函数和变量提前解析。function myfun(){} 这种声明方法会把函数整个语句显式地提前到脚本或者函数前(当前作用域)。而var myfun = function(){}这种声明方法,只是提前了一个变量,并没有提前函数体。
看例子:
var fun1 = function(){
console.log("先声明后使用,没有错");
}
fun1(); // 先声明后使用,没有错
fun2(); // 先使用后声明,也没错
function fun2(){
console.log("先使用后声明,也没错");
}
fun3(); // Uncaught TypeError: fun is not a function
var fun3 = function(){
console.log("fun3的声明被提升了,但初始化没有被提升");
}
-
var myFunction = new Function(参数1,参数2,…,参数n,函数体)
通过实例化一个Function原型,得到一个数据类型为function的对象,也就是一个函数,而该变量就是函数名,如:
var myFunction = new Function('users', 'salary', 'return users * salary');