ES6学习(一)
来源:互联网 发布:网狐6603房卡牛牛源码 编辑:程序博客网 时间:2024/06/02 02:01
ES6
ES6核心内容主要包括const、let 、arrow funtions、 class extends 、super、 template string、 destructuring 、default 、rest argument
import export
我们之前写的JS一直都没有模块化的体系,无法将一个庞大的JS工程拆分成一个个功能相对独立但相互依赖的小工程,再用一种简单的方法把这些小工程连接在一起。
这有可能导致两个问题:
1. JS代码变得很臃肿,难以维护
2. 需要注意每个script标签在html中的位置,因为他们通过有依赖的关系,顺序错了可能就会出现bug
为了解决上面问题,我们利用第三方提供的一些方案,主要有两种CommonJS(服务器端)和AMD(浏览器端如requireJS)
作用域变量
作用域就是一个变量的作用范围,也就是声明一个变量以后,这个变量可以在什么场景下使用,以前JS只有全局作用域,还有一个函数作用域。
使用let解决var的问题
- var没有块级作用域,定义后在当前闭包中都可以访问,如果变量名重复,就会覆盖前面定义的变量,并且也有可能被其他人更改。
- var 在for循环标记变量共享,一般在循环中使用的变量会被共享,其本质也是由于没有块级作用域造成的。
for (var i = 0; i < 3; i++) { setTimeout(function () { alert(i); //弹出三次3 }, 0); }
块级作用域
在用var定义变量的时候,变量是通过闭包进行隔离的,现在用了let,不仅仅可以通过闭包隔离,还增加了一些块级作用域隔离。 块级作用用一组大括号定义一个块,使用 let 定义的变量在大括号的外面是访问不到的。
- 实现块级作用域
if(true){ let name = 'ES6';}console.log(name);// ReferenceError: name is not defined
- 不会污染全局对象
if(true){ let name = 'ES6';}console.log(window.name);//undefined
- 在for循环中也可以使用,嵌套循环不会相互影响
- 重复定义会报错
- 不存在变量的预解释
- 闭包新写法
{}
常量
使用const我们可以去声明一个常量,常量一旦赋值就不能再修改了。
- 常量不能重新赋值
const MY_NAME = 'study1';MY_NAME = 'study2';//Assignment to constant variable
- 变量值可改变
const限制的是不能给变量重新赋值,而变量的值本身是可以改变的,下面操作是可以的。
const names = [study];names.push('study2');console.log(names);
- 不同的块级作用域可以多次定义
const A = "0";{ const A = "A"; console.log(A)}{ const A = "B"; console.log(A)}console.log(A)
阅读全文
0 0
- ES6学习(一)
- ES6学习笔记(一)
- es6学习系列---(一)
- webpack学习ES6(一)
- ES6语法学习(一)
- ES6学习笔记(一)
- ES6学习笔记(一)
- es6学习过程(一)
- ES6学习手册(一)——初识ES6
- ES6学习笔记(一)let const
- es6 学习笔记(一)箭头函数
- es6标准入门 学习简记(一)
- 【Web】ES6学习笔记(一)
- ES6新特性学习(一)
- ES6学习入门(一)babel
- es6学习一
- ES6基础学习(一)
- ES6学习笔记(一)
- kubernetes多节点部署解析
- Android Bander设计与实现
- FATFS一个小问题搞了我2天才解决.特此发帖,希望大家不要重蹈我的覆辙
- 日历运用模式嵌套 布局 定位
- 链表带环问题【每日一题】
- ES6学习(一)
- VTK之基于Qt的VTK应用程序
- Redhat6.8安装JDK1.8
- hdu个人赛6—1007
- poj3692 Kindergarten【最大独立集】
- #1531:德国心脏病——[Offer收割]编程练习赛18
- linux系统 终端下 cat中文乱码/vim不乱码 或者 cat不乱码/vim中文乱码
- KinectV2的精度和与V1的对比
- 5-25 念数字 (15分)