猿问

关于valueOf、toString还有及柯里化函数在不同浏览器下的输出问题?

写了一个函数,如下:


function add(){

    let arr = [];

    arr = arr.concat(Array.prototype.slice.apply(arguments))

    let fun = function(){

        arr = arr.concat(Array.prototype.slice.apply(arguments))

        return fun

    }

    fun.toString = function(){

        console.log(222)

        return arr.reduce(function(total, num){

            return total+num

        }, 0)

    }

    return fun

}

console.log(add(1,2)(2,3)(3))

函数的作用就是累加参数求值,但是问题来了,下面是chrome的输入:



有两个问题:


为什么不是直接输出11,而是f 11

为什么不是先输出222呢,感觉是要先做类型转换再打印呢

问题并没有结束,同样的代码在FF上的输出:


https://img1.mukewang.com/5c74e8e3000109c804560145.jpg


怎么把fun函数输出来了......


还有node输出:

https://img2.mukewang.com/5c74e8e60001bea603350050.jpg


彻底懵逼了......


holdtom
浏览 393回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答