小羊也疯狂 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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序