cómo comparar dos funciones estáticas en javascript iguales o no iguales?cómo comparar dos funciones estáticas son iguales o no en javascript
Respuesta
String(f1) === String(f2)
Creo que te refieres a 'String (f1) === String (f2)' a menos que tengas un método 'string()' personalizado que no conozco :) –
Otra forma de escribirlo, para los ahorradores de bytes allí: '" "+ f1 ===" "+ f2' –
¿Funciona con' (String (f1.bind (this)) === String (f1.bind (this))) '? ¿Yo creo que no? –
var f1 = f2 = function(a){ return a; };
aquí, puede utilizar f1 === f2
porque están apuntando a la misma memoria y son del mismo tipo
var f1 = function(a){ return a; },
f2 = function(a){ return a; };
aquí se puede utilizar ese byte-protector de Andy E utilizada (que está convirtiendo implícitamente la función a su texto del cuerpo como una cadena),
''+f1 == ''+f2
.
Ésta es la esencia de lo que está sucediendo detrás de las scences:
f1.toString() == f2.toString()
Editar: Mirando hacia atrás en este post más de un año después, estoy de acuerdo con @kangax - es probable que nunca se debe hacer esta.
+1 para una respuesta más elaborada –
jaja, pero es su respuesta ... Simplemente no sé la cantidad de magia negra de JavaScript que el autor ha hecho (como la que tenemos) antes,: P –
Tenga en cuenta que 'var f1 = f2 = function() {...} 'da como resultado que' f2' se convierta en una propiedad global, debido a la asignación de funciones no declaradas a 'f2'. Las asignaciones no declaradas son generalmente perjudiciales, por lo que es mejor evitar ese patrón. Además, no confíe en 'Function.prototype.toString' - no está estandarizado y varía en todos los navegadores. – kangax
Cuando necesito comparar funciones, me aseguro de que no haya ambigüedad en el alcance y use el mismo objeto de función.
Supongamos que tengo algunas funciones de biblioteca que toman una devolución de llamada como uno de los parámetros. Por el bien de este ejemplo, la función create1minuteCallback
establecerá un temporizador de 1 minuto y llamará a la devolución de llamada en cada tilde. kill1minuteCallback
desactivará la devolución de llamada y debe pasar la misma función de devolución de llamada que hizo para create1minuteCallback
.
function create1minuteCallback(callback){
//implementation
}
function kill1minuteCallback(callback){
//implementation
}
Es evidente que esto no funcionará como la función que estamos pasando es diferente en la segunda línea:
create1minuteCallback(function(){alert("1 minute callback is called");});
kill1minuteCallback(function(){alert("1 minute callback is called");});
normalmente hago esto:
function callbackFunc(){alert("1 minute callback is called");}
create1minuteCallback(callbackFunc);
kill1minuteCallback(callbackFunc);
Bueno, la forma más sencilla eso - si vas a comparar funciones, lo haces por una razón que asumo. ¿Cuál es tu razón? Mi razón fue no ejecutar una determinada función dos veces. lo hice de esta manera (solo fragmento de código para obtener la idea)
var x = function(){
console.error("i am a functionX");
}
var y = function(){
console.error("i am a functionX");
}
var z = function(){
console.error("i am a functionZ");
}
var x2= x;
var obj = new Object();
obj[x] = "";
obj[x2] = "";
obj[y] = "";
obj[z] = "";
obj.abc = "xaxa";
for (prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.error(obj[prop] + " hello " + prop);
}
}
Función X e Y son los mismos, a pesar de que tienen diferentes espacios en blanco. xey no son lo mismo que z, ya que z tiene un console.error diferente. Btw open your firebug console to see it in the jsbin example
- 1. ¿Son dos funciones iguales?
- 2. Cómo comparar dos cadenas si no son iguales
- 3. Funciones estáticas privadas en javascript
- 4. ¿Cuándo dos enumeraciones son iguales en C#?
- 5. ¿Es posible comparar dos imágenes en Javascript?
- 6. Comparar dos imágenes en JavaScript
- 7. cómo puedo comparar 2 funciones en javascript
- 8. ¿Son estas dos configuraciones iguales en maven?
- 9. cómo comparar dos NSMutableArray?
- 10. Comparar dos matrices Javascript - Asociativo
- 11. ¿Cómo comparar dos NSIndexPaths?
- 12. Comprueba si dos vectores son iguales
- 13. LINQ: compruebe si dos listas son iguales
- 14. Cocoa: compruebe si dos NSArrays son iguales
- 15. Comparando dos números que son aproximadamente iguales
- 16. Cómo comparar dos X509Certificate2 C#
- 17. ¿Cómo el operador C == decide si dos valores de coma flotante son iguales o no?
- 18. C# Cómo encontrar si dos objetos son iguales
- 19. XML :: LibXML: ¿detecta si dos elementos son iguales?
- 20. Determine si dos árboles binarios son iguales
- 21. ¿Cómo determinar si dos páginas web son iguales?
- 22. Comparar dos JObjects o JArray
- 23. jQuery: cómo comprobar si dos elementos son iguales.
- 24. Javascript: comparar dos valores flotantes
- 25. ¿Cómo comprobar estáticamente que dos razones son iguales?
- 26. ¿Cómo puedo saber si dos DLL .NET son iguales?
- 27. ¿Cómo puedo saber si dos variables son aproximadamente iguales?
- 28. Buscar elementos "no iguales" en dos matrices
- 29. ¿cómo puedo comprobar que dos sectores de matrices numpy son iguales (o se superponen)?
- 30. ¿Cómo se determina si dos HashSets son iguales (por valor, no por referencia)?
¿por qué quieres compararlos? – Toskan