资讯专栏INFORMATION COLUMN

ES6之常量和扩展运算符

enda / 1857人阅读

摘要:所以在中,只能变通用方法复制扩展运算符三个点复制数组对象中的扩展运算符可以这样理解对象中的扩展运算符用于取出参数对象中所有可遍历的属性,拷贝到当前对象中。注和扩展运算符,对一级属于属于深拷贝,对后面对级别属于浅拷贝。

1. ES5定义常量
ES5中通过改变属性描述符来达到常量的效果,我们可以将属性定义为只读。
Object.defineProperty(window,"PI",{
    value:"3.14",
    writable:false
})
2. ES6定义常量

使用const定义

const PI = 3;
3. ES5复制数组

数组是复合的数据类型,若直接复制,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组。

var arr = [1,2];
var arr2 = arr;
arr2[0] = 90;
console.log(arr);   //[90,2]
console.log(arr2)   //[90,2]

所以在ES5中,只能变通用concat方法复制

var arr = [1,2];
var arr2 = arr.concat();
arr2[0] = 10;
console.log(arr);   //[1,2]
console.log(arr2);  //[10,2]
4. ES6扩展运算符 ... (三个点)复制数组
对象中的扩展运算符可以这样理解:对象中的扩展运算符(...)用于取出参数对象中所有可遍历的属性,拷贝到当前对象中。
let arr = [1,2,3];
let arr2 = [...arr];    // [1,2,3]

假如给拷贝arr2时push一个元素:

let arr2 = [...arr,5];
console.log(arr2);      //[1,2,3,5]
console.log(arr);       //[1,2,3]

可以看到只会改变arr2的值,而不会影响arr的值。同样改变arr的值也不会影响到arr2的值。

arr.push(12);
console.log(arr);   //[1,2,3,12]
console.log(arr2);  //[1,2,3,5]

所以,上述方法实际上等价于:

let arr = [1,2,3];
let arr2 = Object.assign([],arr);
console.log(arr2);  //[1,2,3]
arr2.push(12);
console.log(arr2);  //[1,2,3,12]
console.log(arr);   //[1,2,3]
Object.assign方法用于对象的合并,将源对象所有的可枚举属性复制到目标对象。

注:Object.assign和扩展运算符(...),对一级属于属于深拷贝,对后面对级别属于浅拷贝。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109542.html

相关文章

  • ES6入门数值的扩展

    摘要:用来表示与大于的最小浮点数之间的差,实际上就是能够表示的最小精度。对象的扩展在对象上新增了个与数学相关的方法。用于去除一个数的小树部分,返回整数部分。对于非数值,则用方法将其转换为数值,对于空值和无法截取整数的值,返回。返回以为底的的对数。 showImg(https://segmentfault.com/img/bVbrTG6?w=1080&h=1080); 1. 二进制和八进制表示...

    tyheist 评论0 收藏0
  • ES6入门数值的扩展

    摘要:用来表示与大于的最小浮点数之间的差,实际上就是能够表示的最小精度。对象的扩展在对象上新增了个与数学相关的方法。用于去除一个数的小树部分,返回整数部分。对于非数值,则用方法将其转换为数值,对于空值和无法截取整数的值,返回。返回以为底的的对数。 showImg(https://segmentfault.com/img/bVbrTG6?w=1080&h=1080); 1. 二进制和八进制表示...

    xi4oh4o 评论0 收藏0
  • ES6 知识整理一(es6快速入门)

    摘要:函数调用会在内存形成一个调用记录,又称调用帧,保存调用位置和内部变量等信息。等到运行结束,将结果返回到,的调用帧才会消失。方法用于将一组值,转换为数组。,和遍历数组方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的方法类似。 ES6 简介 ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。 let 和 const...

    elva 评论0 收藏0
  • es6的一些知识点

    摘要:的一些知识点前言标准的一些区别块级作用域全局作用域函数作用域全局作用域函数作用域变量提升的问题例子块级作用域例如在一个函数,循环。。。 es6的一些知识点 前言:es6(ECMAscript2015)标准 let、const、var的一些区别 let、const 块级作用域、全局作用域、函数作用域 var 全局作用域、函数作用域 变量提升的问题: var : ...

    cnio 评论0 收藏0
  • ES6

    摘要:返回布尔值,表示参数字符串是否在源字符串的尾部。我们可以往里面添加删除查询数据先声明一个对象往这个集合对象中添加元素判断集合中是否存在一个元素返回一个布尔值,表示该值在中存在与否。 一、 ES6 基本语法 1.1 let 作用域就是一个变量的有效的范围,就是你声明一个变量以后,这个变量在什么场合可以使用它。以前JavaScript只有全局作用域和函数作用域,现在JavaScript也有...

    Cobub 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<