如何判断是否匿名函数??

ma2jiajia 2011-08-11 02:59:18
如下代码,如何把第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;
});
...全文
316 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这种问题有什么意义吗?我觉得研究宇宙起源好像比这有意义。
MuBeiBei 2011-08-11
  • 打赏
  • 举报
回复
function callFun(fun) {
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;
});


楼主看看 是这意思吗?
ma2jiajia 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chiyan42 的回复:]

JScript code

var c = function() {};
function() {};



我觉得区别你应该从面向对象的思路去想一想

应该没有区别。。都是临时函数,只不过是一个被保存在变量里了,用过之后都会被销毁。

有名字的,是再js加载的时候,就已经加载好了,所以可以通过名字来调用,
而没名字的因该是当执行到这段代码的时候或者用到这个变量的时候才加载。
……
[/Quote]
我知道它们都是匿名函数
但,一个被保存到变量c里面了
如果能从匿名函数里知道它被保存到变量c里面,那不就能区别出这2者了??
ma2jiajia 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 truelove12 的回复:]

JScript code


<script type="text/javascript">
//<![CDATA[

callFun(function () { });
callFun(c);

function callFun(funPointer) {
if (funPointer === undefine……
[/Quote]
只是函数顺序的区别而已
把函数 c 放到callFun函数的前后,就出现2种结果了...
  • 打赏
  • 举报
回复


<script type="text/javascript">
//<![CDATA[

callFun(function () { });
callFun(c);

function callFun(funPointer) {
if (funPointer === undefined)
alert("is c function");
else
alert("is anonymity function");
};

var c = function () { };



//]]>
</script>

chiyan42 2011-08-11
  • 打赏
  • 举报
回复

var c = function() {};
function() {};


我觉得区别你应该从面向对象的思路去想一想

应该没有区别。。都是临时函数,只不过是一个被保存在变量里了,用过之后都会被销毁。

有名字的,是再js加载的时候,就已经加载好了,所以可以通过名字来调用,
而没名字的因该是当执行到这段代码的时候或者用到这个变量的时候才加载。

个人见解~~慎重参考~
ma2jiajia 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jm89312 的回复:]

查询function后面有没有方法名算不算?
[/Quote]
下面2种情况
function a() {};  // a
var b = new Function("x", "alert(x);"); //anonymous

function后面才会有方法名

下面2种情况 function后面没有方法名,而主要就是想区分这2种方法
var c = function() {};
function() {};
曹西 2011-08-11
  • 打赏
  • 举报
回复
查询function后面有没有方法名算不算?
ma2jiajia 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 truelove12 的回复:]

JScript code


<script type="text/javascript">
//<![CDATA[

callFun(b);

function callFun(fun) {
if (fun === undefined) {
alert("is b function");
……
[/Quote]
......
我说的是判断
var b = function() {};

function() {};
哦...
  • 打赏
  • 举报
回复


<script type="text/javascript">
//<![CDATA[

callFun(b);

function callFun(fun) {
if (fun === undefined) {
alert("is b function");
}
else {
alert("is a function");
}
}

function a()
{ };

var b = function () { };



//]]>
</script>


87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧