js es6 super继承方法加return和不加return有何区别?


    <script>
        class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                this.x + this.y;
            }
        }
        class Son extends Father {
            test() {
                console.log(super.sum() + 123);
            }
        }
        var son = new Son(1, 2);
        son.test();
    </script>

Son继承了Father,在test()方法中使用super调用了sum(),Father中的sum()方法没有写return 控制台输出的是Nan

img

        class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                return this.x + this.y;
            }
        }
        class Son extends Father {
            test() {
                console.log(super.sum() + 123);
            }
        }
        var son = new Son(1, 2);
        son.test();

这里面sum()方法加了return 就正常了控制台输出126
如图

img


请问一下这是为什么呢?为什么要加return呢?

return是让值返回,所以可以取到那个值