千家信息网

JavaScript中ES6相关知识有哪些

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍"JavaScript中ES6相关知识有哪些",在日常操作中,相信很多人在JavaScript中ES6相关知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2025年01月16日JavaScript中ES6相关知识有哪些

这篇文章主要介绍"JavaScript中ES6相关知识有哪些",在日常操作中,相信很多人在JavaScript中ES6相关知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"JavaScript中ES6相关知识有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  let&&const

  [size=0.9em]let与[size=0.9em]var的区别

  let 变量名=变量值

  使用let创建变量和使用var创建变量的区别

  1、用var声明的变量会变量提升,用let声明的变量不会进行变量提升。

  用let创建变量

  let xxx=xxx;

  用let创建函数

  let xxx=function(){}

  创建自执行函数

  ;(function(){

  })();

  2、用let定义变量不允许在[size=0.9em]同一个作用域中重复声明一个变量(只要当前作用域中有这个变量,不管是用var还是用let声明的,再用let声明的话会报错:不能重复声明一个变量),但是可以重复定义(赋值)。

  let i=10;

  let i=20;/会报错,

  i=20;重复赋值不会报错

  3、暂时性死区:在代码块内,使用let命令声明变量之前,该变量都是不可以使用的。

  if (true) {

  // TDZ开始

  tmp = 'abc'; // ReferenceError,报错之后下面都不会输出

  console.log(tmp); // ReferenceError,报错之后下面都不会输出

  let tmp; // TDZ结束

  console.log(tmp); // undefined

  tmp = 123;

  console.log(tmp); // 123

  }

  //下面也会报错出现TDZ

  console.log(typeof x); // ReferenceError

  let x;

  //作为比较如果一个变量根本没有被声明,使用typeof反而不会报错。

  console.log(typeof x);// "undefined"

  4、ES6语法创建的变量(let)存在块级作用域

  [ES5]

  window全局作用域

  函数执行形成的私有作用域

  [ES6]

  除了有ES5中的两个作用域,ES6中新增加块级作用域(我们可以把块级作用域理解为之前学习的私有作用域,存在私有作用域和作用域链的一些机制)[size=0.9em]ES6中把大部分用{}包起来的都称之为块级作用域;

  [size=0.9em]const

  const细节知识点和let类似

  const声明的常量只要声明就必须赋值,而且变量的值是一定的,不能被修改;

  [size=0.9em]注意:并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

  [size=1em][size=1em]const声明的变量也存在暂时性死区,即只能在声明的位置之后使用;

  JS中创建变量的方式汇总

  [size=1em][size=1em][ES5]

  · var :创建变量

  function:创建函数

  ES5中创建变量或者函数:存在变量提升,重复声明等特征;

  [size=1em][size=1em][ES6]

  · let创建变量

  const:ES6中创建常量

  ES6中创建的变量或者常量:都不存在变量提升,也不可以重复声明,而且还存在块级作用域;

  class:创建一个类

  import:导入

  ES6中的解构赋值

  [size=1em][size=1em]按照原有值的结构,把原有值中的某一部分内容快速获取到(快速赋值给一个变量)。

  数组的解构赋值

  [size=1em][size=1em]解构赋值本身是ES6的语法规范,使用什么关键字来声明这些变量是无所谓的,如果不用关键字来声明,那么就相当于给window添加的自定义属性;(严格模式下必须使用关键字来声明,因为严格模式下不允许出现不用关键字声明的变量;),如果解构不到值,那么变量的值就是undefined;

  let [a,b,c]=[12,23,34];

  var [d,e,f]=[35,41,63];

  console.log(a,b,c)//12,23,34;

  console.log(d,e,f)//35,41,63;

  [q,w,e]=[1,2,3];//相当于给window添加了三个属性:q,w,e值分别为1,2,3;(严格模式下会报错)

  [size=1em][size=1em]多维数组的解构赋值,可以让我们快速的获取到需要的结果

  let [a,b,c]=[[45,36],12,[23,43,[1,2[4,[8]]]]23,34];

  console.log(a)//[45,36]

  console.log(b)//12

  console.log(c)//[23,43,[1,2,[4,[8]]]]

  //数组中不需要解构的值可用逗号(,)空开,一个逗号代表空开一项

  let [,,,A]=[12,23,45];

  console.log(A)//undefined

  let [,,B]=[12,23,45]

  console.log(B)//45

  [size=1em][size=1em]在解构赋值中,支持扩展运算符即[size=1em]…[size=1em],只要用了扩展运算符,就相当于新生成了一个数组或者对象,如果解构不到值的话,新生成的数组或者对象为空,而不是undefined,但是扩展运算符必须放在末尾

  let [a,...c]=[12,1,4,83,34];

  console.log(a)//12

  console.log(c)//[1,4,83,34];

  let [a,...b,c]=[12,1,4,83,34];//会报错,扩展运算符只能放在末尾;

  对象的解构赋值

  [size=1em][size=1em]对象的简洁表示法:

  const foo = 'bar';

  const baz = {foo};

  baz // {foo: "bar"}

  // 等同于

  const baz = {foo: foo};

  [size=1em][size=1em]对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

  let { foo, bar } = { foo: "aaa", bar: "bbb" };

  foo // "aaa"

  bar // "bbb"

  如果变量名与属性名不一致,必须写成下面这样。

  let { foo: baz } = { foo: 'aaa', bar: 'bbb' };

  baz // "aaa"

  真正被赋值的是后者,而不是前者。

  let obj = { first: 'hello', last: 'world' };

  let { first: f, last: l } = obj;

  f // 'hello'

  l // 'world'

  first//error: first is not defined

  如果要将一个已经声明的变量用于解构赋值,必须非常小心。

  // 错误的写法

  let x;

  {x} = {x: 1};//会报错

  因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。

  // 正确的写法

  let x;

  ({x} = {x: 1});

放在圆括号当中就可以避免 JavaScript 将其解释为代码块。

到此,关于"JavaScript中ES6相关知识有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

变量 作用 对象 数组 知识 会报 函数 属性 常量 学习 代码 关键 关键字 指向 运算符 中创 运算 内存 地址 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 顺义区综合网络技术服务包括什么 icmp网络安全协议 网络技术培训哪家好 邮件系统服务器安全设置 我的手机服务器怎么恢复 金融信用信息数据库的特征 上海卫宁互联网科技公司 网络安全事件指 青岛水木石网络技术有限公司 用于查看数据库的命令 闵行区技术软件开发质量保障 机房网络安全解决方案 帆软连接数据库 双电源服务器有个电源灯没亮 kegg数据库信号通路图 mcgs读取数据库 山西正规软件开发服务应用 阿里云服务器eth绑定公网ip 湖北邮箱提取外贸软件开发 卫生系统网络安全责任书 服务器数据库技术 顺义区综合网络技术服务包括什么 即时通讯软件开发的基本 食堂充卡系统数据库 上海机械软件开发供应商 客户现有服务器存储空间不足 数据库系统通常由哪五个部分组成 暗黑2重制版各服务器价格 服务器网卡能用万能驱动吗 中学生网络安全教育新闻稿
0