一、变量
1.1let
var:只有全局作用域和函数作用域,全局作用域就是在任何位置都能访问var声明的全局变量

函数作用域,变量声明在函数内容,而函数外部无法访问函数内容的变量

let特点:

1.变量不能重复声明

2.块级作用域,只在代码块中执行

3.不存在变量提升

4.let声明变量具有暂时性死区,不影响作用域链

es6规定,在区块中使用let一旦声明就形成封闭作用域,凡是在声明之前使用这些变量就会报错,这就是死区

块级作用域:点击修改颜色的时候,进行实现的是for循环,使用var的时候是全局的也不是代码块的内容,而使用let则是定义了一部分代码块的内容items[i],可以使用


<script>//使用var的时候,通常是保存i的值或者是保存this的值var items = document.querySelectorAll(".item");for(var i=0;i<items.length;i++){items[i].index =i;items[i].onclick=function (){console.log(this.index)}}//块级作用域let=0时是一块,let=1时是一块,以此类推并不会造成一些相互的影响let items = document.querySelectorAll(".item")//循环添加点击事件for(let i =0;i<items.length;i++){items[i].onclick = function (){//若使用var//this.style.background ="pink"items[i].style.background ="pink"}}
</script>
var let const
只有全局作用域和函数作用域 有块级作用域 有块级作用域
存在变量提升 不存在变量提升 不存在变量提升
可以重复声明 不能重复声明 不能重复声明
没有死区 存在暂时性死区 存在暂时性死区
可以先声明后赋值 可以先声明 后赋值 声明即赋值声明常量

1.一定要赋初值

2.一般常量使用大写

3.常量值不能修改

4.块级作用域

5.对于数组和对象元素修改,不算对常量的修改,不会报错

二、变量的解构赋值
ES6中,允许按照一定模式从数组和对象中提取值,对变量进行赋值,这被称为解构赋值


<script>//数组的解构赋值let [a,b,c] = [1,2,[1,2]];//定义变量abc,分别对其进行解构赋值,如果想忽略数组的某个元素对变量进行赋值,可以使用逗号处理let [a,,c] = [1,2,[1,2]];//rest参数//使用rest参数来接受赋值数组的剩余元素,要确保这个rest参数放在赋值变量的最后一个位置,变量前面必须要有三个点,变量名随意let [name1,name2,...rest] = ["Julius", "Caesar", "Consul", "of the Roman Republic"];//字符串的解构let user = {name: "york",age: 18} let {age, name} = user;//字符串的解构赋值let str = "byesame";for(var i=0;i<str.length;i++){console.log(str[i])}let [a, b, c, d, e, f, g] = str;console.log(a, b, c, d, e, f, g)//对象的解构赋值let {name1:a,age:b}={name:100,age:200}//对name,age进行重命名操作console.log(name1,age);//报错,原因就是name和age被重新命名了,新的名字为a,bconsole.log(a,b);//100,200let user ={name:"zhangsan",age:22,child:{group1:{one:111,two:222},group2:{one:333two:444}},arr:[10,20,30]}//完全解构let { name, age, child: { group1: { one, two }, group2: { one: one1, two: two2 } }, arr: [a, b, c] } = user;console.log(name, age, one, two, one1, two2, a, b, c);</script>

【ES6】es6新特性相关推荐

  1. ES6常用新特性---笔记一

    ES6的新特性 1.定义函数不一定需要function 2.创建类,constructor 3.模块,JavaScript支持了原生的module,将不同的代码分别写在不同的文件,最后只需export ...

  2. ES6一些新特性记录

    ES6一些新特性记录 1.箭头操作符 箭头操作符左边是需要输入的参数,右边是返回值 比如运用到js回调函数中可以使书写更加方便 var array=[1,3,5]; //标准写法 array.fore ...

  3. ES6 的新特性总结

    ES6 的新特性总结 关于声明变量 由 var 变成 let 和 const 区别: var声明的变量会挂载到window上,let和const声明的变量不会 var声明的变量存在变量提升,而let和 ...

  4. ES6 — ES11 新特性一篇通

    一.ES6 1.1.let 变量不能重复声明 有块级作用域 不存在变量提升(必须先声明后使用) 不影响作用域链 <script>//声明变量let a;let b, c, d;let e ...

  5. ES6~ES12新特性

    ES6新特性 let属性 <div class="item">记得刷卡</div> <script type="text/javascrip ...

  6. es5和es6的区别、以及es6的新特性

    es5和es6的区别 系统库的引入 es5:ES5中的引用需要先使用require导入React包,成为对象,再去进行真正引用 es6:ES6里,可以使用import方法来直接实现系统库引用,不需要额 ...

  7. html5语义化边框,Html5、Css3、ES6的新特性

    html5的新特性 1.语义化标签有利于seo,有助于爬虫抓取更多的有效信息,爬虫是依赖于标签来确定上下文和各个关键字的权重. 语义化的html在没有css的情况下也能呈现较好的内容结构与代码结构 方 ...

  8. ES6/ES7新特性

    ES6 一.let const let 声明的变量只在代码块内有效 for循环的计数器适合用let命令 不存在变量提升.–即var变量在声明之前就能使用,值为undefine.let不允许 暂时性死区 ...

  9. ES6的新特性----Vue学习必备基础知识

    学习Vue之前,ES6的基础常识是必须要了解的,下面列举了几种最重要的特性,学会了这些,Vue的学习就易如反掌了. 1.变量声明const和let 在ES6之前,我们都是用var关键字声明变量.var ...

  10. ES6的新特性(8)——数组的扩展

    数组的扩展 扩展运算符 含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) / ...

最新文章

  1. S3C2440 SDRAM内存驱动 .
  2. jenkins需安装插件总结
  3. Mysql学习积累之一[网摘收藏 个人学习参考]
  4. 默认路由、静态路由、动态路由
  5. 第五章 循环结构课后反思
  6. LeetCode 531. 孤独像素 I
  7. 【数据挖掘】数据挖掘和数据分析基础
  8. python中如何导入图片,Unreal中的python如何导入图片资源到引擎
  9. 面向对象有哪几种常用的设计模式,六大设计原则是什么
  10. nagios系列(一)centos6.5环境部署nagios服务端
  11. java 分卷 zip
  12. PSP??? 生产者与消费者框架,还是线程模型?
  13. 【计算机组成原理】计算机的发展及应用
  14. 【C语言】的%*d、%.*s等详解:
  15. 微小宝编辑器修改html代码,怎么在微小宝编辑器提取永久链接
  16. c语言编写 程序 闰年,C语言计算闰年程序
  17. @RunWith的使用
  18. Excel中批量生成标签,批量打印标签。按指定模板批量打印标签
  19. APPSCAN的使用
  20. 每天学点统计学——频率和累计频数

热门文章

  1. 二十年目睹之怪状-大学
  2. 不积跬步无以至千里001
  3. 0503、while循环、循环的控制、case分支、函数、字符串的处理
  4. 【知识蒸馏】Knowledge Review
  5. thinkphp封装短信宝验证码
  6. ai人工智能软件开发模式介绍
  7. AuNP@SiO2二氧化硅包裹的金纳米粒子|AuNP@Al2O3氧化铝包覆核壳结构金纳米颗粒|齐岳生物
  8. 【推荐系统】召回模型线下评价指标
  9. vb python excel_震惊!当Python遇到Excel后,将开启你的认知虫洞
  10. HTML中的删除线:del和s的区别