ES6之 变量的解构赋值 ➕ 扩展运算符(…)

这篇具有很好参考价值的文章主要介绍了ES6之 变量的解构赋值 ➕ 扩展运算符(…)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 变量的解构赋值

1.1 直接解构赋值

  • 一看就懂,代码如下:

    <script>
        console.log("=======1.数组的解构=======");
    
        const DOG_NAMES = ['麦兜','泡泡','贝塔'];
        let [mai,pao,bei] = DOG_NAMES;
    
        console.log(mai); //麦兜
        console.log(pao); //泡泡
        console.log(bei); //贝塔
    
    
        console.log("\n\n\n\n=======2.对象的解构=======");
    
        const dog_1 = {
            dogName:'麦兜',
            dogAge:3,
            dogKind:'边牧',
            dogSex:'女',
            dogPlayGames:function(){
                console.log('狗狗超级爱玩球。。。。');
            }
        }
        /**
         * a. 对象解构的时候,属性名要和上面声明的对象里的属性名一致
         * b. 即:相当于声明了几个变量,并对新声明的变量进行了赋值
         */
        let {dogName,dogAge,dogPlayGames} = dog_1;
        
        console.log(dogName);
        console.log(dogAge);
    
        // dog_1.dogPlayGames();
        dogPlayGames();
    
    </script>
    
  • 效果如下:
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

1.2 解构赋值——修改属性名

  • 如下:
      const dog_1 = {
          dogName:'麦兜',
          dogAge:3,
          dogKind:'边牧',
          dogSex:'女'
      }
      let {dogName:dName,dogAge} = dog_1;//dogName 改成 dName
      
      console.log(dName);
    
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

1.3 连续解构赋值

  • 如下:

       const dog_1 = {
           dogName:'麦兜',
           dogAge:3,
           dogKind:{
               kindId:'A1',
               kindName:'边牧'
           }
       }
       // let {dogName:dName,dogAge} = dog_1;
    
       // let {dogKind} = dog_1;
       // console.log(dogKind);
       // console.log(dogKind.kindName);
    
       let {dogKind:{kindId:kId,kindName}} = dog_1; //连续解构赋值
    
       console.log(kId);
    
       console.log(kindName);
    

    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

2. 扩展运算符

2.1 简介(官网)

  • 什么是扩展运算符(…运算符)?
    就是展开语法 (Spread syntax), 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。(译者注: 字面量一般指 [1, 2, 3] 或者 {name: “mdn”} 这种简洁的构造方式)。
  • 参考官网:
    官网-展开语法.

2.2 应用例子

2.2.1 简单例子1

  • 代码如下:
    <script>
        function sum_1(x,y,z){
            console.log(arguments);
            return x + y + z;
        }
    
        const numbers = [1,2,3];
        let result_1 = sum_1(...numbers);//等价于 let result_1 = sum_1(1,2,3);
        console.log('result_1--->'+result_1);
    </script>
    
  • 效果如下:
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

2.2.2 数组拷贝

  • 代码如下:
     var arr_1 = ['麦兜','贝塔','泡泡'];
     var arr_2 = [...arr_1]; //数组拷贝
     console.log(arr_2);
    
     arr_2.push('西瓜');
     console.log(arr_2);
    
  • 效果如下:
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言
  • 需要注意的是:
    • 扩展运算符拷贝的是,浅拷贝 (只遍历一层)
      ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言
    • 再来个例子说明:
      ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

2.2.3 连接多个数组

  • 函数写法
     let dogs = ['麦兜','贝塔','泡泡'];
     let cats = ['猫咪1','猫咪2'];
    
     let pets_1 = dogs.concat(cats); //使用函数 concat 连接
    
  • 扩展运算符写法
    let pets_2 = [...dogs,...cats]; //使用扩展运算符连接
    
  • 效果如下:
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

2.2.4 拷贝对象(多层和多维数组一样)

  • 代码如下:

    console.log('\n\n\n\n=============拷贝对象===========');
    
    let user_1 = {name:'小花',age:18};
    
    let user_2 = {...user_1};
    user_2.name = '小明';
    
    console.log(user_1);
    console.log(user_2);
    
    console.log('\n\n\n\n=============拷贝对象多层===========');
    
    let pserson_1 = {
        name:'小花',
        age:18,
        schoolInfo:{
            schoolId:1001,
            schoolName:'XXX第一高级中学'
        }
    }
    let person_2 = {...pserson_1};
    person_2.name = '小刚';
    person_2.schoolInfo.schoolName = '第二中学';
    
    console.log(pserson_1);
    console.log(person_2);
    
  • 效果如下:
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言文章来源地址https://www.toymoban.com/news/detail-705848.html

2.2.5 合并对象

  • 第一种写法:
    let school_1 = {name:'北京大学',address:'北京'};
    let school_2 = {...school_1,name:'清华大学',createDate:'1911'}; //在copy时,修改属性以及添加属性
    
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言
  • 第二种写法:
    var obj1 = { foo: "bar", x: 42 };
    var obj2 = { foo: "baz", y: 13 };
    
    var mergedObj = { ...obj1, ...obj2 };
    // 合并后的对象:{ foo: "baz", x: 42, y: 13 }
    
    ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

2.2.6 关于展开对象(jsx)

  • 单独使用原生 js 的话,对象是不能通过扩展运算符进行展开的。
  • 可以通过 jsxbabel )来展开:
    • 代码如下:
      ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言
      <script type="text/babel">
          //1. 创建组件
          class DogComponent extends React.Component{
              render(){
      
                  const {dogName,dogAge,dogKind,dogDesc} = this.props;//对象的解构赋值
      
                  return(
                      <ul>
                          <li>姓名:{dogName}</li>
                          <li>年龄:{dogAge}</li>
                          <li>种类:{dogKind}</li>
                          <li>备注:{dogDesc}</li>
      
                          <li>备注-2{this.props.dogDesc}</li>
                      </ul>
                      
                  )
              }
          }
      
          //2. 定义对象
          const dog ={
              dogName:'麦兜',
              dogAge:3,
              dogKind:'边牧',
              dogDesc:'温柔、撒娇、粘人、偶尔调皮~'
          }
      
          //3. 渲染组件到页面
          ReactDOM.render(<DogComponent {...dog}/>,document.getElementById('dog'));
      
      </script>
      
    • 效果如下:
      ES6之 变量的解构赋值 ➕ 扩展运算符(…),VUE + JS、ES6、NodeJs等,es6,javascript,开发语言

到了这里,关于ES6之 变量的解构赋值 ➕ 扩展运算符(…)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES6链判断运算符(?.)的正确打开方式

    在实际应用中,如果读取对象内部 的某个属性,往往需要判断一下,属性的上层对象是否存在。比如,读取message.body.user.firstName这个属性,安全的写法是写成下下面这样: 上面的例子,firstName属性在对象的第四层,所以需要判断四次,每一层是否有值。三元运算符也常用于

    2024年02月13日
    浏览(39)
  • es6的语法糖,展开运算符,类的实现

          对象存在键值对,如果需要解构对象,你需要使用对象的键名为变量名     字符串的展开   数组的展开   对象的展开 对象 的简明写法1: 对象 的简明写法2: 具有相同特征的一类事物的抽象 1、使用class 2、类的动态属性定义在构造器中(constructor),如果没有定义

    2024年02月02日
    浏览(40)
  • ES6中Null判断运算符(??)正确打开方式-

    读取对象属性的时候,如果某个属性的值是null或者undefined,有时候需要为它们指定默认值。常见的作法是通过||运算符指定默认值。 上面的三行代码都是通过||运算符指定默认值,但是这样写是错的。我们这样写的意愿一般是,只要属性的值为null或者undefined,默认值就会生效

    2024年02月13日
    浏览(53)
  • ES9学习 -- 对象的剩余参数与扩展运算符 / 正则扩展 / Promise.finally / 异步迭代

    // kerwin {age:100,location: ‘dalian’} 其中…other 可以拿到对象的剩余参数 // {name: ‘xiaoming’,location: ‘dalian’,age: 18] 在实际开发中,我们会使用ajax() 封装一些默认的属性和属性值,以备用户忘记或未传入某些参数。 // { methods: “get”, async: true, url: “/api”} 正则表达式命名捕获

    2024年04月09日
    浏览(40)
  • 【JavaScript】JavaScript 运算符 ⑤ ( 赋值运算符 | 基础赋值运算符 与 复合赋值运算符 )

    JavaScript 赋值运算符种类 : 基础赋值运算符 : 等于 : = ; 复合赋值运算符 : 加等 : += 减等 : -= 乘等 : *= 除等 : /= 取模等 : %= 有符号左移等 : = 有符号右移等 : = 无符号左移等 : = 无符号右移等 : = 在 JavaScript 语言中 , \\\" 赋值运算符 \\\" 的 作用是 为 变量 分配值 ; 最基础的 \\\" 赋值运算

    2024年03月25日
    浏览(52)
  • ES6 解构赋值

    解构赋值是一种在编程中常见且方便的语法特性,它可以让你从数组或对象中快速提取数据,并将数据赋值给变量。在许多编程语言中都有类似的特性。 在 JavaScript 中,解构赋值使得从数组或对象中提取数据变得简单。它可以用于数组和对象,并且使用相同的语法来解构它们

    2024年02月14日
    浏览(44)
  • ES6: 解构赋值

    解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。 数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法,如下代码所示: 数组解构赋值: eg1: eg2: eg3: eg4: eg5: 交换2个变量的值 总结: 赋值运算符 = 左侧的

    2024年02月09日
    浏览(62)
  • 【ES6】—解构赋值

    解构赋值:解构赋值就是一种模式的匹配,只要等号两边的模式完全相同的,那么左边的变量就会被赋值对应右边的值 PS:数组解构赋值时,是通过索引的唯一性赋值的 (1). ES5 的写法 (2). ES6 的写法 ES6的写法 当左右两边的结构模式不匹配时,按照左边变量对应索引的位置赋值

    2024年02月12日
    浏览(39)
  • [ES6]解构与赋值

    解构赋值是对赋值运算符的扩展。 通过解构,可以更加简单的获取复杂对象的属性 解构的源,解构赋值表达式的右边部分 解构的目标,解构赋值表达式的左边部分 当变量名称与对象中的属性名称一致时,可简写 {attr} 使用解构方式获取对象参数中的对应属性,这样在函数内部

    2023年04月22日
    浏览(44)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包