Js函数深入理解-函数声明
本质:函数是function类型的一个实例,即函数是一个对象,函数名是指向对象的指针
1.如何定义一个函数?
三种方式:
A.函数声明
function a(){ alert(1) }
Function是关键字,a是函数名
B.匿名函数
Var a= function(){alert(1)}
这个匿名函数可以看做一个对象,然后把对象赋值给a.
大家都知道x=123,只是把一个简单的数字赋值给x,同样的我们可以把一个对象赋值给x
C.构造函数方式(这种方式不要用,了解一下就好)
var a = new Function('x=1','alert(x)');
前面几个是参数,最后一个是函数主体。默认x=1
a(2) 得到的结果是2
缺点是:要解析两次,一次是常规解析,一次是字符串解析
2.普通声明与表达式声明区别
普通声明:
a();
function a(){alert(11)}
结果:11
表达式:
a();
var a = function(){alert(11)}
会报“Uncaught TypeError: a is not a function”
第一种方式在执行a()前,会先读取函数的声明
而第二种方式就不会