2017-07-03 108 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