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。

  1. 还没有评论

  1. 还没有引用通告。