2017-07-03 106 views
0

我是JavaScript新手,我試圖理解函數的邏輯。以下是我想要做的:嘗試使用IIFE時未捕獲的類型錯誤

var GetterSetter = (function() { 
    var balance = 0.0; 


    var getBalance = function() { 
     return balance; 
    }; 
    var setBalance = function (amount) { 
     if (amount > 0) { 
      return balance = amount; 
     } 
     }; 
})(); 

GetterSetter.setBalance(120); 

當我嘗試運行該功能時。我:

Uncaught TypeError: Cannot read property 'setBalance' of undefined at GetterSetterScript.js:16

+3

你的函數返回** **什麼。這就是爲什麼你得到錯誤 – hindmost

+1

你需要返回一個對象的功能作爲方法。 – evolutionxbox

+2

您實際上可以定義真正的getter和setter,而不是使用方法。 – evolutionxbox

回答

2

GetterSetter不存在爲setBalance的方法結束。

您需要在代碼中設置該功能。我已經提供和示例爲您提供:

代碼

var GetterSetter = (function() { 
    var balance = 0.0; 
    return { 
    getBalance: function() { 
     return balance; 
    }, 
    setBalance: function (amount) { 
     if (amount > 0) { 
     return balance = amount; 
     } 
    } 
    } 
})(); 
4

使用

return { 
    getBalance:getBalance, 
    setBalance:setBalance 
} 

在功能

+4

或者在ES6中,只需'return {getBalance,setBalance}' – somethinghere