如下代码,如何把第2种函数创建方法和第3种函数创建方法区别出来呢??function anonyfn(fn) {
alert(fn.toString());
}function a() {
var i=0;
}var b = function() {
var j=0;
}annonyfn(a); // function a() {....
annonyfn(b); // function() {....
annonyfn(function() { // function() {...
var k=0;
});
alert(fn.toString());
}function a() {
var i=0;
}var b = function() {
var j=0;
}annonyfn(a); // function a() {....
annonyfn(b); // function() {....
annonyfn(function() { // function() {...
var k=0;
});
//<![CDATA[ callFun(b); function callFun(fun) {
if (fun === undefined) {
alert("is b function");
}
else {
alert("is a function");
}
} function a()
{ }; var b = function () { };
//]]>
</script>
我说的是判断
var b = function() {};
和
function() {};
哦...
function a() {}; // a
var b = new Function("x", "alert(x);"); //anonymous
function后面才会有方法名下面2种情况 function后面没有方法名,而主要就是想区分这2种方法
var c = function() {};
function() {};
var c = function() {};
function() {};
我觉得区别你应该从面向对象的思路去想一想应该没有区别。。都是临时函数,只不过是一个被保存在变量里了,用过之后都会被销毁。有名字的,是再js加载的时候,就已经加载好了,所以可以通过名字来调用,
而没名字的因该是当执行到这段代码的时候或者用到这个变量的时候才加载。个人见解~~慎重参考~
//<![CDATA[ callFun(function () { });
callFun(c); function callFun(funPointer) {
if (funPointer === undefined)
alert("is c function");
else
alert("is anonymity function");
}; var c = function () { };
//]]>
</script>
把函数 c 放到callFun函数的前后,就出现2种结果了...
var value = fun.toString().substring(fun.toString().indexOf('function') + 8,fun.toString().indexOf('()'));
if(!value){
alert('是匿名函数');
}
} function a() {
var i=0;
}
var b = function() {
var j=0;
} callFun(a); // function a() {....
callFun(b); // function() {....
callFun(function() { // function() {...
var k=0;
});楼主看看 是这意思吗?