小羊也疯狂 2017-06-18 09: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 10:30
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置