序:说起来ECMAScript中最有意思莫过于函数—函数式对象大家都知道而函数都是Function类型的实例 而且都和其他引用类型一样都有属性和方法,对象名字都是一个指针,所以函数名其实就是一个指针(指向这个函数)不会和某个函数绑定
大家有时间的可以看看引用类型技能理解上面的话(其实我也是似懂非懂)
概念:
定义一次 却可以调用执行多次的一段JS代码
创建方式:
1:函数声明(预解析的时候回提前哦)
function sum (num1 num2){//可以传参数是形参
return: num1+num2//每个函数都有的return属性返回值
}
2:函数表达式:
var sum=function (num1 num2){//这其实是一个匿名函数哦
return: num1+num2//每个函数都有的return属性返回值
};//记住有分号哦和申明其他变量一样
3:Function构造函数:
var sum=new Function("num1","num2","return num1+num2")
技术上讲这其实是一个函数表达式 不推荐使用 这个会解析2次 无论怎么样最会一个参数都会被解析成函数体而前面的参数则是新的函数的参数形参。这种方式理解<<函数是对象,函数名是指针>>更加直观(理解构造函数对于这个应该好理解)请看下面的例子:
function num(num1,num2){
return: num1+num2
}
alert(num(10,20))//30 num是指针 num是指针 num是指针 他指向这个函数(这个我也搞了很久才明白记号是指针)
var anotherNum=num
alert(another(20,20)) //40
num=null
alert(anotherNum(30,30)) //60
个人解释:
num是指针赋给anotherNum anotherNum 也成为了一个指针指向函数
当num=null的时候只是num为null 函数被没有变 改的只是num这个指针所以anotherNum只是被赋予一个指针指向函数,函数不会变结果也是同样执行