2016-06-07 4 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); 
})(); 

В чем смысл if (func.apply(this, arguments) == false)? Я не думаю, что функция вернет false.javascript: почему возвращаемое значение может быть ложным

+5

Это * особенно * функция не возвращает ложь, но другие могут ... – ssube

ответ

2

Функции могут возвращать любое значение. Это включает false.

Если ваши функции не возвращают false, тогда код внутри этого условного номера никогда не будет запущен. Поэтому вы можете удалить его, если он почему-то вас раздражает.

Вот пример с функцией, которая возвращает false:

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; 
 
})();

Смежные вопросы