es6学习记录之函数扩展

105 阅读2分钟

es6学习记录之函数扩展

前言

最新在看阮一峰老师的es6,很多时候看不懂别人代码,有些写法不知道是什么意思只能靠猜...所以还是要把es6这些基础的东西过一遍,特意记录一下学习过程方便以后查阅复习.

函数参数的默认赋值

        //默认赋值
        function defaultValue(x = 10) {
            console.log(x);
        }
        defaultValue() //10
        defaultValue(50) //50

说明:这里的意思是如果不传参数那么x默认等于10,如果传参X则为正常参数 这个写法以前写分页的时候见过我还傻乎乎的觉得别人写错了,我现在的处理方式都是在定义data的时候就把默认数据写好,有了默认参数基本上可以避免这样做.

rest 参数

ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

    function add (...values){
        console.log(values); //[1,2,3,6,4]
    }
    add(1,2,3,6,4)

注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。

        function add(...values, ca) {  //报错Rest parameter must be last formal parameter 
            //报错 Rest参数必须是最后一个形参
        }
        add(1, 2, 3, 6, 4)

箭头函数

        let ad = ca => 5  //只有一行可以省略大括号表示直接return
        // 等同于
        function ad(ca) {
            return 5
        }
        // 如果参数多或者要省略那么可以
        let ca = () => 5
        // 如果函数体内要更多的操作要加上大括号
        let cpd = (a,b) => {
            let addb = a+b
            return addb
        }
        console.log(cpd(1,2));//3

Function.prototype.toString()

会返回该函数本色甚至注释

       function ad (){
                // 是否显示
                console.log('测试数据');
            }
           let ca =  ad.toString()
           console.log(ca);

image.png

尾调优化

简单说就是一个函数是另外一个函数的最后一步

     function f(x) {
            return g(x);
        }

下面三种情况都不算尾调用

        // 情况一
        function f(x) {
            let y = g(x);
            return y;
        }
        // 情况二
        function f(x) {
            return g(x) + 1;
        }
        // 情况三
        function f(x) {
            g(x);
        }

参考资料:阮一峰 ECMAScript 6 (ES6) 标准入门教程 第三版