小羊也疯狂 2017-06-18 01:47 采纳率: 100%
浏览 780
已采纳

js 函数和对象的表示 出了点问题

图片说明
我在实现BST的时候 ,上面这个函数能返回一个最小键对应的结点
(该结点类型为object,里面有个key属性)
我想打印 key也很简单
console.log(tree.min().key)

现在我嫌min这个方法每次还得执行才返回对象,我想自动执行返回对象,于是我在上面这个函数外面套了个立即执行

 this.min = function () {
        if (root) {
            return minNode(root)
        }
        return null
    }()

这个时候立即执行返回的对象就赋值给了this.min属性
console.log(tree.min.key) 为什么报错说Cannot read property 'key' of null

为什么我想这么改呢 因为下面这个实现我需要结点,每次执行函数很麻烦,同时我也不知道为啥会报错 this.min() 我打断点的时候就是 最小结点啊
图片说明
求大神指点

  • 写回答

1条回答 默认 最新

  • 当作看不见 2017-06-18 02:30
    关注

    无法给一个null的属性赋值,由于返回的是null ,所以读取返回值.left 的时候就会报错
    下面赋值的时候 this.min() 报错,由于赋值,只能给一个存在的变量赋值, this.min()不是一个变量,所以赋值 是没有意义的.但this.min 是可以被赋值的.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥20 关于#r语言#的问题:广义加行模型拟合曲线后如何求拐点
  • ¥15 fluent设置了自动保存后,会有几个时间点不保存
  • ¥20 激光照射到四象线探测器,通过液晶屏显示X、Y值
  • ¥15 这怎么做,怎么在我的思路下改下我这写的不对
  • ¥50 数据库开发问题求解答
  • ¥15 安装anaconda时报错
  • ¥15 小程序有个导出到插件方式,我是在分包下引入的插件,这个export的路径对吗,我看官方文档上写的是相对路径
  • ¥20 希望有人能帮我完成这个设计( *ˊᵕˋ)
  • ¥100 将Intptr传入SetHdevmode()将Intptr传入后转换为DEVMODE的值与外部代码不一致
  • ¥50 基于ERA5数据计算VPD