TypeError:null引用错误

时间:2014-04-24 05:39:26

标签: javascript typeerror

我正在学习codeacademy javascript代码,我真的不明白为什么它会给我这个错误:

  

TypeError:无法获取属性' magazine'未定义或空引用

  1. 编写具有单个参数itemCost的add方法。它会将itemCost添加到总数中。
  2. 我们已经为您部分编写了扫描方法并启动了switch语句。将以下两项添加到switch语句中:
    • " magazine",4.99
    • "巧克力",0.45
  3. 最后,使用扫描方法购买2个鸡蛋和3个杂志。

    var cashRegister = {
        total: 0,
    
        add: function(itemCost) {
            itemCost += total
        },
    
        scan: function(item) {
            switch (item) {
                case "eggs":
                    this.add(0.98);
                    break;
    
                case "milk":
                    this.add(1.23);
                    break;
    
                    //Add other 2 items here
                case 'magazine':
                    this.add(4.99);
                    break;
                case 'chocolate':
                    this.add(0.45);
                    break;
            }
            return true;
        }
    };
    
    
    cashRegister.sacan['eggs', 'eggs', 'magazine', 'magazine']
    
    console.log('Your bill is ' + cashRegister.total);
    

3 个答案:

答案 0 :(得分:2)

看起来你的大部分位都是正确的,但你有一个拼写错误,并且在某些方面错误地使用了扫描功能。

Javascript中的函数是带括号的caleld,而不是括号中的括号。此外,scan()函数将单个项目作为参数,而不是数组(或多个参数)。

所以要扫描一个'egg',代码看起来像这样:

cashRegister.scan('eggs');

这应该让你回到正轨。

答案 1 :(得分:0)

您的代码有很多错误。如果您想获得总价值,请尝试以下代码。

This is a开始学习javascript的好地方。

<script>
var cashRegister = {
    total: 0,

    add: function(itemCost) {
        this.total += itemCost;
    },

    scan: function(item) {
        switch (item) {
            case "eggs":
                this.add(0.98);
                break;

            case "milk":
                this.add(1.23);
                break;

                //Add other 2 items here
            case 'magazine':
                this.add(4.99);
                break;
            case 'chocolate':
                this.add(0.45);
                break;
        }
    }
};
cashRegister.scan('eggs');
cashRegister.scan('eggs');
cashRegister.scan('magazine');
cashRegister.scan('magazine');

alert('Your bill is ' + cashRegister.total);

</script>

答案 2 :(得分:0)

这对我有用:

var cashRegister = {
total:0,

//insert the add method here    
add: function(itemCost){
    this.total += itemCost;
},

scan: function(item) {
    switch (item) { 
    case "eggs": 
        this.add(0.98); 
        break;

    case "milk": 
        this.add(1.23); 
        break;

    //Add other 2 items here
    case "magazine":
        this.add(4.99);
        break;

    case "chocolate":
        this.add(0.45);
        break;
    }
    return true;
   }
 };

//Scan 2 eggs and 3 magazines
cashRegister.scan("eggs");
cashRegister.scan("eggs");
cashRegister.scan("magazine");
cashRegister.scan("magazine");
cashRegister.scan("magazine");

//Show the total bill
console.log('Your bill is '+cashRegister.total);