2016-06-07 16 views
0
function test() { 
    alert(1); 
    return "hello"; 
} 

Function.prototype.before = function (func) { 
    var __bself = this; 
    return function() { 
     if (func.apply(this, arguments) == false) 
      return false; 

     return __bself.apply(__bself, arguments); 
    } 
}; 

test.before(function(){ 
    alert(2); 
})(); 

Was bedeutet if (func.apply(this, arguments) == false)? Ich glaube nicht, dass die Funktion false zurückgibt.javascript: warum der Rückgabewert ist möglicherweise falsch

+5

* Dies insbesondere * Funktion nicht false zurück, aber andere können ... – ssube

Antwort

2

Funktionen können einen beliebigen Wert zurückgeben. Das schließt false ein.

Wenn Ihre Funktionen false nicht zurückgeben, wird der Code innerhalb dieser Bedingung niemals ausgeführt. So können Sie es entfernen, wenn es Sie aus irgendeinem Grund ärgert. Hier

ist ein Beispiel mit einer Funktion, die false zurückgibt:

function test() { // This function is never called 
 
    console.log(1); 
 
    return "hello"; 
 
} 
 
Function.prototype.before = function (func) { 
 
    var __bself = this; 
 
    return function() { 
 
    if (func.apply(this, arguments) == false){ 
 
     return false; 
 
    } 
 
    return __bself.apply(__bself, arguments); 
 
    } 
 
}; 
 
test.before(function(){ 
 
    console.log(2); 
 
    return false; 
 
})();

Verwandte Themen