下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

web前端:ES6-基础学习(3):const关键字的本质

作者:益州府龙骑校尉     来源: https://www.cnblogs.com/donghuang/archive/2020/04/06/1264206点击数:1024发布时间: 2020-04-16 15:36:35

标签: JavascriptJScriptES6

Web开发

  ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是EuropeanComputerManufacturersAssociation)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为Javascript或JScript,所以它可以理解为是javascript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。

  ECMAScript定义了一套保留字,保留字在某种意义上是为了将来的而保留的单词。因此,保留字不能被用作变量名或函数名。

  ECMAScript2016的制定工作已经启动,许多草案已被提交到委员会,包括以下这些:异步方法、定型对象、并行JavaScript、类修饰符以及observables。

  虽然委员会正在积极评估这些特性,但我们无法预知它们的未来,其中一些会加入到下一版规范,另一些会加入未来的其它规范,剩下的将最终被遗弃。TC39进程解释了新特性从开始到最终被语言采用所经历的各种阶段。

  ES6-基础学习(3):const关键字的本质

  const是如何做到变量在声明初始化之后不允许改变的?

  其实const保证的不是变量的值不允许改变,而是保证该变量指向的内存地址所保存的数据不允许改变。

  由于简单数据类型和复合数据类型保存值的方式不同:

  对于简单类型的数据(数值number、字符串string、布尔值boolean),值就保存在变量指向的内存地址内,因此const声明的简单类型变量就等同于常量。

  而对于复杂类型(对象object,数组array,函数function),变量指向的内存地址,实际上保存的只是一个指向实际数据的指针。const只能保证这个指针是固定的(即总是指向一个固定的内存地址),但这个指针指向的数据结构变不变就无法控制了,所以在使用const声明复杂类型数据为常量时要慎重,必须非常小心。

  ES6是继ES5之后的一次主要改进,语言规范由ES5.1时代的245页扩充至600页。ES6增添了许多必要的特性,例如:模块和类,以及一些实用特性,例如MaPS、Sets、Promises、生成器(Generators)等。

  尽管ES6做了大量的更新,但是它依旧完全向后兼容以前的版本,标准化委员会决定避免由不兼容版本语言导致的"web体验破碎"。结果是,所有老代码都可以正常运行,整个过渡也显得更为平滑,但随之而来的问题是,开发者们抱怨了多年的老问题依然存在。

  ECMA-262定义了ECMAScript支持的一套关键字,这些关键字标识了ECMAScript语句的开头和/或结尾。根据规定,关键字是保留的,不能用作变量名或函数名。

  所以,ECMAScript实际上是一种脚本在语法和语义上的标准。实际上JavaScript是由ECMAScript,DOM和BOM三者组成的。

  所以说,在JavaScript,JScript和ActionScript中声明变量,操作数组等语法完全一样,因为它们都是ECMAScript。但是在操作浏览器对象等方面又有各自独特的方法,这些都是各自语言的扩展。

赞(9)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程