ES6 -- 形参设置初始值、拓展运算符、迭代器、生成函数

形参设置初始值

特点

(1)类似于python的形参设置初始值

(2)具有默认值的参数,都放到后面

            function add(a, b, c = 10) {
                return a + b + c;
            }

            console.log(add(1, 2))  // 13
            let options = [1, 2, 3, 4, 5]
            console.log(add(...options)) // 6

扩展运算符

特点:

(1)将数组转换成逗号分隔的参数序列

            const TF_BOYS = ['易烊千玺', '王源', '王俊凯']
            function chunwan() {
                console.log(arguments) // '易烊千玺', '王源', '王俊凯'
            }

            chunwan(...TF_BOYS)

            // 数组合并
            const KUAI_ZI = ['王太利', '肖央']
            const FENG_HUANG = ['曾毅', '玲花']
            console.log(KUAI_ZI.concat(FENG_HUANG))
            console.log([...KUAI_ZI, ...FENG_HUANG]) // 性能远高于concat

			// 属于的拷贝,如果里面的有引用类型,则是浅拷贝
			let kuai_zi1 = [...KUAI_ZI]

(2)对象的拓展运算符

对象的拓展运算可以用于对象合并,将剩余的部分直接重新生成一个对象等,拓展开类似于一个Map

            const CONFIG = {
                host: '127.0.0.1',
                port: '3306',
                username: 'root',
                password: 'root'
            }

            function connect({host, port, ...user}) {
                console.log(host)
                console.log(port)
                console.log(user)
            }

            connect(CONFIG)

            const CONFIG1 = {
                type: 'oracle'
            }
            const CONFIG2 = {
                cmd: 'sqlplus'
            }

            console.log({...CONFIG, ...CONFIG1, ...CONFIG2})

迭代器

特点

(1)Array、Arguments、Set、Map、String、TypeArray、NodeList部署了Iterator接口(对象中的一个属性)的都可以使用迭代器遍历

(2)可以自定义[Symbol.iterator]方法,定义遍历对象中的元素,感觉有点傻叉

尚硅谷Web前端ES6教程,涵盖ES6-ES11_哔哩哔哩_bilibili

            const XIYOU = ['唐僧', '孙悟空', '猪八戒', '沙僧']
            for (let item of XIYOU) {
                console.log(item)
            }

            for (let item of '我是牛角大王'){
                console.log(item)
            }

生成器函数

特点:

(1)异步编程,纯回调函数

			function * generator() {
			    console.log(111)
				yield '一直没有耳朵'  // yield代码分段,可以用于分段调试,next传入实参即可,异步编程参数传递
                console.log(222)
				yield '一直没有尾巴'
                console.log(333)
				yield '真奇怪'
                console.log(444)
            }

            let iterator  = generator();
			// iterator.next() // 111
			// iterator.next() // 222
			// iterator.next() // 333
			// iterator.next() // 444
			for (let item of iterator){
			    console.log(item)
			}

异步编程

JavaScript是单线程的,使用异步的方式可以避免线程切换,节省资源,但是原生的写法比较难以读懂和查看

            // 传统的回调函数
            setTimeout(() => {
                console.log('回调编程')
	            setTimeout(()=>{
	                console.log('先等2s再说')
	            },2000)
            }, 2000)
			console.log('你会立即看到我')

 Promise解决方案 -- 单独学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值