美文网首页
【es6笔记】es6的入门简介_函数和参数(3)

【es6笔记】es6的入门简介_函数和参数(3)

作者: 李明燮 | 来源:发表于2022-05-24 10:17 被阅读0次

这里整理了ES6新增的函数(箭头函数)和参数(默认值和rest)相关内容。

<!DOCType html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
</head>

<body>
    <script>
        console.log("--------------1.箭头函数--------------");
        let func1 = function (a, b) {
            console.log("a + b = ", a + b);
        };

        // 1.声明
        let func2 = (a, b) => {
            console.log("a + b = ", a + b);
        };

        func1(1, 2); // a + b =  3
        func2(1, 2); // a + b =  3

        // 2.this是静态的,this始终指向函数声明时坐在的作用域,不会变

        function getName1(){
            console.log(this.name);
        }

        let getName2 = () => {
            console.log(this.name);
        }

        window.name = '小张';
        const xiaoming = {
            name: '小明'
        }
        getName1(); //小张
        getName2(); //小张

        getName1.call(xiaoming); //小明
        getName2.call(xiaoming); //小张

        // 3.不能作为构造函数实例化对象
        let Person = (name, age) =>{
            this.name = name;
            this.age = age;
        }

        // let xiaozhang = new Person('小张', 20); //TypeError: Person is not a constructor
        // console.log(xiaozhang); 

        // 4.不能使用arguments变量会报错
        // let fn = (a,b) => {
        //     console.log(arguments);
        // }
        // fn(1,2); // ReferenceError: arguments is not defined

        // 5.箭头函数的简写
        // 1)省略小括号,当形参只有一个时,可以省略
        let add = n => {
            return n + n;
        }
        console.log(add(5)); //10

        // 2)省略大括号,当函数体只有一条语句时,可以省略
        // 3)省略return,当函数体只有一条语句且是return语句时,可以省略
        let add2 = n => n + n;
        console.log(add(4)); //8

        // 练习
        const arr = [1,4,5,62,6,8,3,41,72,93,10];
        let result = arr.filter(function(item){
            if(item % 2 === 0){
                return true;
            } else {
                return false;
            }
        });
        console.log(result); //(6) [4, 62, 6, 8, 72, 10]

        result1 = arr.filter(item => item % 2 === 0); //(6) [4, 62, 6, 8, 72, 10]

        //箭头函数适合于,和this无关的回调,定时器,数组方法回调
        //不适合this有关的,比如DOM事件回调,对象的回调。

        console.log("--------------2.参数--------------");

        // 1.参数默认值: 给默认值的参数一般放后面
        function func3(a, b = 10) {
            console.log("a + b = ", a + b);
        }
        
        func3(2); // a + b =  12

        // 2.参数默认值: 参数可以是一个对象,也可以是一个函数
        function printUser({name, age = 10, address = '北京'}) {
            console.log(name, age, address);
        }

        let user = {
            name: '小明',
            address : '上海'
        }

        printUser(user); //小明 10 上海

        // 3.rest 参数:用于获取函数的实参,用来代替arguments

        //ES5的方式
        function printArg() {
            console.log(arguments);
        }

        printArg('北京', '上海', '深圳'); //(3) ["北京", "上海", "深圳", callee: ƒ, Symbol(Symbol.iterator): ƒ]

        //ES6的 rest方式
        function printArg1(...args){
            console.log(args);
        }

        printArg1('北京', '上海', '深圳'); //(3) ["北京", "上海", "深圳"]

        //rest 参数必须放最后,否则报错 //TypeError: Rest parameter must be last formal parameter
        function printArg2(a,b,...args){
            console.log(a);
            console.log(b);
            console.log(args);
        }

        printArg2(1,2,3,4); // 1 2 [3,4]

        // 4.扩展运算符
        const aa = ['小明', '小红', '小刚'];

        function fn1() {
            console.log(arguments);
        }

        fn1(aa); // [Array(3), callee: ƒ, Symbol(Symbol.iterator): ƒ]

        //下面是等同效果
        fn1(...aa); // (3) [ '小明', '小红', '小刚' ]
        fn1('小明', '小红', '小刚'); // (3) [ '小明', '小红', '小刚' ]

        // 练习
        //1.合并
        const bb = ['小明', '小红'];
        const cc = ['小刚', '小美'];
        const bbcc = [...bb, ...cc];
        console.log(bbcc); // [ '小明', '小红', '小刚', '小美' ]

        //2.克隆
        const ee = [1,2,3];
        const ff = [...ee]; // [1,2,3]


    </script>
</body>

</html>

欢迎大家的意见和交流

email: li_mingxie@163.com

相关文章

  • ES6函数的扩展(一)

    参考:ES6入门(阮一峰) 一、ES6为函数设置默认参数 ES6之前不能为函数设置默认参数,ES6新增可以为函数设...

  • ES6函数扩展

    本文只是学习es6的一些简单笔记,详情请看阮一峰的es6入门。 关于函数参数的默认值 什么时候需要为函数参数设置默...

  • 函数的扩展

    es6的一些知识点,阅读ECMAScript 6 入门心得和总结 参数默认值 ES6 允许为函数的参数设置默认值,...

  • 函数,数组的扩展

    ECMAScript 6 入门 函数参数的默认值 § ⇧ 基本用法 § ⇧ ES6 之前,不能直接为函数的参数指定...

  • 【es6笔记】es6的入门简介_函数和参数(3)

    这里整理了ES6新增的函数(箭头函数)和参数(默认值和rest)相关内容。 欢迎大家的意见和交流 email: l...

  • es6新特性

    es6新特性 1.函数参数添加默认值 es6之前 es6之后: 2.字符串拼接 es6之前: es6之后: 3.解...

  • ES6 写法示例

    匿名函数调用 ES5 ES6 箭头函数 将数组的内容 * 2 ES5 ES6 默认参数 ES5 ES6 不定参数 ...

  • 【学习笔记】ES6 标准 - 函数默认参数、箭头函数、剩余参数

    ES6 标准 - 函数默认参数、箭头函数、剩余参数

  • 函数的扩展

    ** 参考**书籍:ECMAScript 6 入门作者:阮一峰 函数参数的默认值ES6 允许为函数的参数设置默认值...

  • 函数的拓展

    1、ES6允许为函数参数设置默认值,即直接卸载参数定义的后面。 2、参数的默认作用域 3、rest参数 ES6引入...

网友评论

      本文标题:【es6笔记】es6的入门简介_函数和参数(3)

      本文链接:https://www.haomeiwen.com/subject/ltrjprtx.html