美文网首页全栈记
1 ES6 基础认知、let变量、const常量

1 ES6 基础认知、let变量、const常量

作者: 官清岁月 | 来源:发表于2019-05-11 08:06 被阅读0次

1、ES6基础认知:

(1).ES5.0;//2009年;ES6.0;//2015年 -> 也称为ES2015;ES7.0;//2016 ->ES2016;ES8.0;//2017年;ES9.0;//2018年; -> 普遍使用ES6、ES7,其它版本还在“提案”中;而且目前浏览器不支持ES6以上的内容,需使用Babel转换器转换为ES5.0;[实际ES6、ES7语法有的是封装的“语法糖”,有的就是新增语法,例如Proxy/Reflect等]

- - ->>>迭代目的:使javaScript可用于编写大型复杂的应用程序,成为企业级开发语言;[最初js不受重视,一度被认为是“玩具”语言,语法简单而且不规范,ajax以及后期nodejs的出现使其地位得以提升,而且目前后端部分逻辑操作也往前端“迁移”]

- - - >>> ES6.0语法更加规范,严格遵守"ES5.0严格模式" 即‘use strict’;//语法严格,降低出错概率,这样才更受“企业级应用开发”的青睐;ES6.0向后兼容浏览器,向前兼容之前的ES版本API(废除了部分不友好的API,例如with();eval(); 同时推出新的API,其是对前面版本API的完善和加强);

- - - >>>准确的说:目前所用的js都是ECMA组织制定的规范,应该称之为ECMAScript,但是人们还是习惯以javaScript来称呼它;

补充:js发展史:1995:js出现 -> 1996:javaScript 1.0/1.1; -> 1997:网景(javaScript)、微软(jScript,IE3)、Nonbas(ScripteEase); ECMA以javaScript1.1为蓝本,发布ECMAScript1.0版本-> 1999: HTML4.0发布,IE提出异步传输解决方案,提出的ActiveXObject对象,ajax开始被提及,国内进入web2.0时代; -> 2008: 浏览器大战,Google的chrome浏览器使用v8引擎,加载速度极快,IE输掉了(现在也没缓过来),同时移动端设备开始逐渐出现;此时ES4.0,该版本提出了class类继承、模块等概念,由于其是脚本语言,不受重视,就将该版本编制成ES3.1,后来逐渐发展成了ES5.0 -> 2009: ES5.0发布; -> 2015: ES6.0发布,目前ES9.0已经修订完成,还未发布到市场;

2、Babel转换器 -> 语言/语法降级(ES6中有新增的语法以及浏览器底层的东西,例如proxy,set存储等,即使使用babel,也无法转换成ES5,浏览器不能识别,兼容性不好,还需再增添插件处理)

(1).Babel语法降级底层原理 -> 抽象成语法树,词法分析、语法、语义分析等;

(2).在线工具:https://www.babeljs.cn     https://babeljs.io/

(3).本地学习环境搭建:                                                                                                                        npm init-y;//生成package.json -> npm install @babel/core -> npm install @babel/preset-env ->npm install  @babel/cli -> 创建配置文件.babelrc -> npx babel xxx.js -o xxx.js;//每次xxx.js更改,都需要重新执行该命令,可进行监听:npx babel xxx.js -o xxx.js --watch;

presets:预设->插件集合,下面的plugins中写具体的插件

3、var变量、let变量、const常量;

- - >>实战开发中建议使用 const > let > var;//不要混合使用,const执行效率更高,浏览器对const常量会减少“追踪”,提供的算力更小;浏览器对let,var变量需要时刻监控其的变化,耗费性能;

(1).var声明变量:变量声明提升、可重复定义、全局变量挂载到window;作用域:全局作用域、局部作用域即函数作用域;

(2).let声明变量: 不进行变量声明提升、不能重复定义、不会挂载到window;快级作用域,临时死区TDZ;let可解决闭包问题;

(3).const常量:只能定义常量,声明、赋值不能分开写;常量的值确定后不能进行更改,否则报错;不进行变量声明提升、不能重复定义、不会挂载到window;快级作用域,作用域中会形成TDZ;但其不能解决闭包,因为其定义变量后值不能进行更改; for(const i=0; i<10, i++){};//i在改变,报错

相关文章

  • Chapter 1 ES6、模块化、打包

    1. ES6基础 语言特性:const, let:const为常量,一旦定义不可修改。let为块级作用域变量。函数...

  • ES6 温故知新

    let / const ES6 种用来定义变量和常量的 机遇 CONST 创建的变量,变量存储的值不能被修改(常量...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • 2018-09-04

    js变量和常量 JS中与变量常量声明相关的关键字有var、let以及const,其中let和const是ES6的新...

  • ES6常用及关键特性

    1、变量声明 let 和 const 其中let表示变量,const表示常量,const声明的变量被认为是常量,也...

  • var、let、const的区别

    let和const是es6中的新变量。 const是常量,常量不可更改,试图更改常量会报错, const只在当前块...

  • ES6的let const语法以及let和var的区别

    一、let和const ES6中新增的用来创建变量和常量的基于CONST创建变量,变量存储的值不能被修改(常量) ...

  • 1 ES6 基础认知、let变量、const常量

    1、ES6基础认知: (1).ES5.0;//2009年;ES6.0;//2015年 ->也称为ES2015;ES...

  • ES6 新特性

    1.const和let ES6中新增的const和let关键字,在定义常量和变量时不会存在变量提升的情况,而且通过...

  • es6小记

    title: es6小记 变量与常量 let 定义变量, const 定义常量,常量定义一次后,不可更改 不可重复...

网友评论

    本文标题:1 ES6 基础认知、let变量、const常量

    本文链接:https://www.haomeiwen.com/subject/fozylqtx.html