2017-04-06 69 views
0

此JavaScript代碼需要在一個句子中提取第一個單詞,並調用一個名爲第一個單詞的函數,但如果該單詞沒有功能,則不執行任何操作。但它不是編譯。任何想法爲什麼以及如何解決它?
即如何將參數傳遞給函數?JavaScript私有方法引用立即調用函數內

refactor = (function() { 

    const john = function (description) { 
    console.log(description); 
    }; 

    const factoring = { 
    'john': john(description) // <--- description is not defined --- 

    }; 

    return Object.freeze({ 
    'byName': function (description) { // calls the correct private method if present 
     let name = description.match(/(\S+)\s/)[1]; 
     if (name in factoring) factoring[name](description); 
    } 
    }); 
}()); 
+0

錯誤說明了一切。 'desc'沒有在任何地方定義。 – Li357

+0

'desc'甚至會是什麼? –

+0

然後,我怎樣才能將參數傳遞給函數? –

回答

0

desc未定義。要麼定義desc並給它一個值(const desc = "Some random string")或用desc替換一些值('john': john("Some random string"))。

+0

但是這個值不可用,它只能在運行時間。 –

+1

@FredJ。因爲它是可用的,它應該首先聲明。 – zerkms

+0

@FredJ。 zerkms是對的。對不起,我習慣於常規JS而不是ECMAScript –

相關問題