javascript中两种函数的创建方式差异
js中有两种创建函数的方式:
function testA(){……}
var testB = function(){……};
一、看代码:
testA();
testB();
function testA(){alert("I'm A!");}
var testB = function(){alert("I'm B!");};
//运行结果是只有A执行了
//原因是A的定义方式会javascript解析器提到最前面执行
//所以testA可执行,二testB还没定义
二、依然看代码:
//继续测试另一特性 alert(testA); alert(testB); //结果是输出了两个函数的源代码,相当于调用了toString方法 //不同的是ie的是直接输出,FF下会帮你排好版 //验证一下 alert(testA.toString()); alert(testB.toString());
这个不能算是差异,利用这个特性可以正则匹配来获取函数名。
三、好吧无耻的请大家继续看代码:
//继续验证另一个 alert(testA.name); alert(testB.name); //结果是FF,chrome支持函数的name属性,会返回testA,testB是空 //IE下都是undefined //testA是一个有名字的函数,而testB则是一个引用,引用的一个匿名函数的内存地址
over。