为什么调用的时候加上括号就会报错呢?

为什么调用的时候加上括号就会报错呢?

<template>

  <div>{{sort}}</div>

</template>


<script>

export default {

  data() {

    return {

      list: [1, 4, 6, 7, -9, 4, 0, -2, -1, 8]

    };

  },

  computed: {

      sort(){

          return this.list.sort();

      }

  }

};

</script>

调用的时候不加括号就可以正常显示,加了括号就会报错,不是说这个函数不传参数的时候写不写括号都行吗?

<div>{{sort()}}</div>

http://img1.sycdn.imooc.com//climg/5ebe6eab0944b82605060580.jpg

另外,sort方法不是我这样直接list.sort()调用吗?怎么看好多同学都在里面写一个函数,我这个没有写内容也成功显示了呀,是我记错了么?课程在哪讲的这个,找不到了....网上查到好像sort方法使用的时候里面写的函数都不一样,还有的是Array.sort(数组名)这样调用的,有点迷糊

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,对于你的问题解答如下:

1、vue语法规定,computed里面定义的是计算属性,也就是说如下所示为值的sort是个属性,在template中使用时,需要直接写属性名,不可以添加括号调用。

http://img1.sycdn.imooc.com//climg/5ebe7489097d0b8105430177.jpg

2、同学这种写法,直接调用的sort方法是可以的。

js语法中规定,sort方法默认是升序排列。传递参数是为了控制是升序还是降序排列数组

可以通过传递一个回调函数(格式是固定的),同学可以结合如下示例测试理解记忆一下

http://img1.sycdn.imooc.com//climg/5ebe75e409ee274909530314.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • Aurora_Meteor 提问者 #1
    那computed里面的那些计算属性也是不能传参数的是吗?只能直接使用this在计算属性里面对data里的属性来进行操作?那那些要传参的方法是在methods和其他的一些东西比如过滤器什么的里面进行定义?
    2020-05-15 19:48:52
好帮手慕慕子 2020-05-16 10:37:30

同学你好,在vue中,在computed中的计算属性默认是不可以传参的。但可以利用闭包实现传参,示例:

http://img1.sycdn.imooc.com//climg/5ebf4cba0998492e05210248.jpg

http://img1.sycdn.imooc.com//climg/5ebf4cd8098b4b8b04750106.jpg

页面显示结果

http://img1.sycdn.imooc.com//climg/5ebf4cef0906cbe301300068.jpg

实际工作中一般不会在computed中传递参数,上面这种方式同学了解下即可。

同学理解是对的,一般需要传参的方法是在methods中定义的。

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师