先看几种常用的定义方式:
function func1([参数]){
/*函数体*/
}
var func2=function([参数]){
/*函数体*/
}
var func3=function func4([参数]){
/*函数体*/
}
var func5=new Function()
上述第一种方式是最常用的方式,不用多说。
第二种是将一匿名函数赋给一个变量,调用方法:func2([函数])
第三种是将func4赋给变量func3,调用方法:func3([函数])或func4([函数])
第四种是声明func5为一个对象。
再看看它们的区别:
function func(){
//函数体
}
//等价于
var func=function(){
//函数体
}
但同样是定义函数,在用法上有一定的区别。
<script>
//这样是正确的
func(1)
function func(a)
{
alert(a)
}
</script>
<script>
//这样是错误的,会提示func未定义,主要是在调用func之前没有定义
func(1)
var func = function(a)
{
alert(a)
}
//这样是正确的,在调用func之前有定义
var func = function(a)
{
alert(a)
}
func(1)
</script>
用同样的方法可以去理解第三种定义方式。
第四种定义方式也是需要声明对象后才可以引用。
JS中创建函数的几种方法
声明函数:最普通最标准的声明函数方法,包括函数名及函数体。
function fn1(){}
创建匿名函数表达式:创建一个变量,这个变量的内容为一个函数
var fn1 = funciton (){}
创建具名函数表达式:具名函数表达式的函数名只能在创建函数内部使用,即采用此种方法创建的函数在函数外层只能使用fn1不能使用func_name的函数名。func_name的命名只能在创建的函数的内部使用
var fn1 = funciton func_name(){}
自执行函数:自执行函数属于上述的“函数表达式”,规则相同
(function(){alert(1)})()
(function fn1(){alert(1)})()
Function构造函数
可以给 Function 构造函数传一个函数字符串,返回包含这个字符串命令的函数,此种方法创建的是匿名函数。
其他创建函数的方法
当然还有其他创建函数或执行函数的方法,这里不再多说,比如采用 eval , setTimeout , setInterval 等非常用方法,这里不做过多介绍,属于非标准方法,这里不做过多展开