JavaScript关闭:未捕获的TypeError:counter.value不是函数

x7R5fQ

我正在遵循本教程:https : //www.youtube.com/watch?v=1JsJx1x35c0

但是,当我运行此代码时,它给了我一个错误

var counter = (function(){
    var privateCounter = 0
  function changeBy(val){
    privateCounter += val
  }

  return {
    increment: function(){
        changeBy(1)
    },
    decrement: function(){
        changeBy(-1)
    },
    value: function(){
        return privateCounter
    }
  }
})

console.log(counter.value())
counter.increment()
counter.increment()
console.log(counter.value())
counter.decrement()
console.log(counter.value())

我明白了

未捕获的TypeError:counter.value不是函数

这有什么解释?为什么将其counter.value()视为不是功能?

一定的表现

整个counter表达式的计算结果是一个函数,而不是对象,并且该函数没有value属性。如果调用该函数,value则将返回具有属性的对象,但您没有这样做。

您需要立即调用该函数(作为IIFE),以使counter变量名引用返回的对象:

var counter = (function() {
  var privateCounter = 0

  function changeBy(val) {
    privateCounter += val
  }

  return {
    increment: function() {
      changeBy(1)
    },
    decrement: function() {
      changeBy(-1)
    },
    value: function() {
      return privateCounter
    }
  }
})();

console.log(counter.value())
counter.increment()
counter.increment()
console.log(counter.value())
counter.decrement()
console.log(counter.value())

你可以留在像你现在正在做的,如果你想创建多个计数器开始未调用的函数,但是呢,最好把它makeCounter代替counter

var makeCounter = function() {
  var privateCounter = 0

  function changeBy(val) {
    privateCounter += val
  }

  return {
    increment: function() {
      changeBy(1)
    },
    decrement: function() {
      changeBy(-1)
    },
    value: function() {
      return privateCounter
    }
  }
};

const counter1 = makeCounter();
console.log(counter1.value())
counter1.increment()
counter1.increment()
console.log(counter1.value())
counter1.decrement()
console.log(counter1.value())

console.log('----');

const counter2 = makeCounter();
counter2.decrement();
counter2.decrement();
console.log(counter2.value())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript未捕获的TypeError:value.toUpperCase不是函数

来自分类Dev

未捕获的TypeError:undefined不是函数-Javascript

来自分类Dev

Javascript“未捕获的TypeError:对象不是函数”

来自分类Dev

JavaScript OOP:未捕获的TypeError:不是函数

来自分类Dev

Javascript:未捕获的TypeError:不是函数

来自分类Dev

JavaScript WordPress未捕获的typeerror $不是函数

来自分类Dev

获取错误未捕获的TypeError:value.replace不是函数

来自分类Dev

未捕获的TypeError:$(…).on不是函数

来自分类Dev

未捕获的TypeError:ctx.fillText不是函数(Javascript画布)

来自分类常见问题

未捕获的TypeError:Object.values不是JavaScript函数

来自分类Dev

Javascript。未捕获的TypeError:Hashids不是构造函数

来自分类Dev

Javascript-未捕获的TypeError:string不是函数

来自分类Dev

Javascript中的“未捕获的TypeError:x.toUpperCase不是函数”

来自分类Dev

JavaScript错误:未捕获的TypeError:a [b]不是函数

来自分类Dev

未捕获的TypeError:$(...)。stellar不是函数

来自分类Dev

未捕获的TypeError:$ .cookie不是Dialog的函数

来自分类Dev

未捕获的TypeError:$ .ajax(...)。成功不是函数

来自分类Dev

未捕获的TypeError:#<Object>不是函数

来自分类Dev

未捕获的TypeError:$ .growl不是函数

来自分类Dev

未捕获的TypeError:Undefined不是函数

来自分类常见问题

未捕获的TypeError:$ .post不是函数

来自分类Dev

未捕获的TypeError:$(...)。tokenfield不是函数

来自分类Dev

未捕获的TypeError:this.transitionTo不是函数

来自分类Dev

未捕获的TypeError:undefined不是函数

来自分类Dev

未捕获的TypeError:number不是函数

来自分类Dev

获取“未捕获的TypeError:$(...)。timeago不是函数”

来自分类Dev

未捕获的TypeError:undefined不是jQuery的函数

来自分类Dev

未捕获的TypeError:undefined不是函数

来自分类Dev

jQuery-未捕获的TypeError:$不是函数

Related 相关文章

  1. 1

    Javascript未捕获的TypeError:value.toUpperCase不是函数

  2. 2

    未捕获的TypeError:undefined不是函数-Javascript

  3. 3

    Javascript“未捕获的TypeError:对象不是函数”

  4. 4

    JavaScript OOP:未捕获的TypeError:不是函数

  5. 5

    Javascript:未捕获的TypeError:不是函数

  6. 6

    JavaScript WordPress未捕获的typeerror $不是函数

  7. 7

    获取错误未捕获的TypeError:value.replace不是函数

  8. 8

    未捕获的TypeError:$(…).on不是函数

  9. 9

    未捕获的TypeError:ctx.fillText不是函数(Javascript画布)

  10. 10

    未捕获的TypeError:Object.values不是JavaScript函数

  11. 11

    Javascript。未捕获的TypeError:Hashids不是构造函数

  12. 12

    Javascript-未捕获的TypeError:string不是函数

  13. 13

    Javascript中的“未捕获的TypeError:x.toUpperCase不是函数”

  14. 14

    JavaScript错误:未捕获的TypeError:a [b]不是函数

  15. 15

    未捕获的TypeError:$(...)。stellar不是函数

  16. 16

    未捕获的TypeError:$ .cookie不是Dialog的函数

  17. 17

    未捕获的TypeError:$ .ajax(...)。成功不是函数

  18. 18

    未捕获的TypeError:#<Object>不是函数

  19. 19

    未捕获的TypeError:$ .growl不是函数

  20. 20

    未捕获的TypeError:Undefined不是函数

  21. 21

    未捕获的TypeError:$ .post不是函数

  22. 22

    未捕获的TypeError:$(...)。tokenfield不是函数

  23. 23

    未捕获的TypeError:this.transitionTo不是函数

  24. 24

    未捕获的TypeError:undefined不是函数

  25. 25

    未捕获的TypeError:number不是函数

  26. 26

    获取“未捕获的TypeError:$(...)。timeago不是函数”

  27. 27

    未捕获的TypeError:undefined不是jQuery的函数

  28. 28

    未捕获的TypeError:undefined不是函数

  29. 29

    jQuery-未捕获的TypeError:$不是函数

热门标签

归档