2017-02-14 79 views
-1

如果我必須創建一個函數,請說may()(它將另一個函數fn作爲參數),並返回一個新函數fn的參數不是未定義或爲空,我應該如何確定fn的參數是否未定義?如何確定作爲參數傳遞給另一個函數的函數的參數是否未定義

function maybe(fn) { 
    return fn; 
} 

function fn(firstName, lastName) { 
    return `${firstName} ${lastName}`; 
} 

// this will print, firstName Lastname  
console.log(maybe(fn)("firstName","Lastname")); 

// it will print undefined Lastname 
console.log(maybe(fn)(undefined, "Lastname")); 

我如何修改可能發揮作用,以檢查是否有任何的fn的說法是undefinednull並返回false如果有任何?

除了我傳入的參數之外,我不能對fn函數進行任何修改,因爲fn是一個外部函數,它將被傳遞到maybe函數中。

回答

2

你可以有maybe(fn)返回一個包裝函數:

function maybe(fn) { 
    return function() { 
     for (var i = 0; i < arguments.length; ++i) { 
      if (arguments[i] == null) { 
       return false; 
      } 
     } 

     return fn.apply(this, arguments); 
    }; 
} 
+0

謝謝!!!! 1 !!!!! –

+0

@QiuxuanChen如果我的回答有幫助,你會介意接受我的回答嗎? – mc10

相關問題