为什么javascript认为函数是变量?

问题描述 投票:0回答:2

嗯,我刚刚注意到JS在某种程度上将函数作为代码中的变量。就是这里:

<template>
  <div id="">
      <div>
          <input type="text" v-model="value">
          <button v-on:click='[factorial(), show=!show]'>Factorial</button>
          <span v-show="show">{{value}}</span>
      </div>
  </div>
</template>
<script>
export default {
  name: 'app',
  data () {
    return {
        value : 0,
        show: false
    }
  },
  methods: {
  },
  computed: {
        factorial(x=this.value){
            if (!x){return 1}
            else {return x*factorial(x-1)}
        }
  },
  mounted() {}
}
</script>
<style lang="scss">
</style>

错误是ReferenceError:找不到变量:阶乘。

我在做什么错?

javascript vue.js
2个回答
0
投票
调用该函数时,您还需要使用this

methods: { factorial(x) { if (!x) { x = this.value; } return x * this.factorial(x-1); }, },


0
投票
<template> <div id=""> <div> <input type="text" v-model="value"> <button v-on:click='[factorial(), show=!show]'>Factorial</button> <span v-show="show">{{value}}</span> </div> </div> </template> <script> export default { name: 'app', data () { return { value : 0, show: false } }, methods: { factorial(x=this.value){ if (!x){return 1} else {return x * this.factorial(x-1)} } }, } </script>

这里是您可以使用的沙箱:

https://codesandbox.io/s/lingering-voice-p6d9l
© www.soinside.com 2019 - 2024. All rights reserved.