网络编程
位置:首页>> 网络编程>> JavaScript>> JavaScript能判定两个function等价吗?

JavaScript能判定两个function等价吗?

作者:月影 来源:影月阁 发布时间:2009-08-13 14:45:00 

标签:function,判断,函数

这里的等价不是说function的toString相同,也不是说function的引用相同,而是说
对于两个function A和B,如果它们的输入参数相同,返回值必然相同

JavaScript存在这样的判定函数吗?

答案是不存在,证明如下:

假定存在一个function P能判断任意两个一般函数f1和f2是否等价,即

若f1、f2等价,P(f1,f2) return true

若f1、f2不等价, P(f1,f2) return false;

现在我定义一个函数P1

function P1(f1,f2){
    if(P(P,f1) && P(P1,f2)) return false;
    else return P(f1,f2);
}

那么对于P(P,P1)

1) 若P(P,P1) return true,那么P,P1等价,可P1(P,P1)却return false,显然和P,P1等价假设矛盾

2) 若P(P,P1) return false,那么P1(P,P1) return false,而对于任意其它f1,f2,显然P1(f1,f2)的返回值都和P(f1,f2)的返回值完全相同,根据前面的定义,P与P1等价,同P(P,P1) return false矛盾。

综上所述,不存在一个函数P,能够判定JavaScript的两个function等价。

证毕。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com