es6尾调用优化

99 阅读1分钟

"use strict";

function sum(x, y){

if (y > 0){

    return sum(x+1, y-1);

    }else{

    return x;

    }

}

\

console.log(sum(1, 100000))

VM123:5 Uncaught RangeError: Maximum call stack size exceeded

    at sum (:5:1)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

    at sum (:7:12)

发生溢出,如果用尾调用优化来说是不存在的,但是因为各个浏览器还不支持,所以运行的时候还是发生了溢出

可以看caniuse.com/es6

看各个浏览器对es6属性支持的情况