两种等价创建函数的方法:
function funcName(){ }
var funcName=function(){ }
前面一种方式创建的是有名函数,而后面是创建了一个无名函数,只是让一个变量指向了这个无名函数。
在使用上仅有一点区别,就是:对于有名函数,它可以出现在调用之后再定义;而对于无名函数,它必须是在调用之前就已经定义。
由此可见,尽管JavaScript是一门解释型的语言,但它会在函数调用时,检查整个代码中是否存在相应的函数定义,这个函数名只有是通过function funcName()形式定义的才会有效,而不能是匿名函数。
应用
一、确定当前运行脚本是否为严格模式
二、检测一个对象是否为函数对象
如果想检测一个对象是否是真正的函数对象(并且具有函数方法),可以参照下面代码检测它的class属性:
function isFunction(x){
return Object.prototype.toString.call(x)==="[object Function]";
}