ES6——Day2(const命令+const对象)
来源:互联网 发布:excel数据分析抽样 编辑:程序博客网 时间:2024/06/08 17:09
1、const命令
A.const命令——概念
(1)定义:对于const而言,它是用来声明变量的,但是声明的是“常量”。
(2)性质:一旦声明,常量的值就不会改变。
<script type="text/traceur">const Pi=3.1415926;console.log(Pi);Pi=3;console.log(Pi); //error</script>
对于const命令的用法而言,它不可以重复赋值,但可以重复使用参与运算,如下:
<script type="text/traceur">const Pi=3.1415926;console.log(Pi); //3.1415926console.log(5*Pi); //15.707963</script>
B.const命令——块级作用域
之前接触的let定义的变量即有“块级作用域”的概念,对于const命令而言,有这个“块级作用域”的概念吗?以一个案例作为显示。
<script type="text/traceur">{if(false){const Pi=3.1415926;}}console.log(Pi);</script>结果:undefined
解析:由于const命令定义的Pi是在块级作用域中体现的,在外部输出Pi显示“undefined”未定义的状态,即表明“const与let都具有块级作用域的概念”。
C.const命令——暂时性死区
<script type="text/traceur">if(true){console.log(Pi); //unfined;const Pi =3.1415926;};</script>
结果:undefined
解析:由于console.log在Pi定义之前执行,即会出现暂时性死区。
D.const命令——不可重复声明
<script type="text/traceur">{var a=100;const =200;console.log(a);}</script>
结果:error(显示错误)
解析:由于在块级作用域中有const定义变量即“常量”,其他的定义就是无意义的,所以就会显示错误。
2、const对象
(1)const单一对象及错误用法
<script type="text/traceur">const.person={};person.name="Zhangsan";person.age=12;console.log(person.name); //Zhangsanconsole.log(person.age); //12console.log(person); //Object{name:"Zhangsan",age:12}</script>在上述const案例中,首先依次输出person对象的属性:name、age,其次输出了person整个对象。
注意:由于const命令是指向变量所在的地址,所以将变量命名为一个“常量”,就很容易出错。
<script type="text/traceur">const.person={};person.name="Zhangsan";person.age=12;console.log(person.name); console.log(person.age); console.log(person); person = {};</script>上述代码多了一个“person={}”,即会显示错误“person is read-only”,表示person对象是“只读”的,由于person对象重复的赋值,显示错误。
(2)const数组及错误用法
<script type="text/traceur">const arr=[];console.log(arr);console.log(arr.length);console.log("-----");arr.push("Hello World!");console.log(arr);console.log(arr.length);console.log("-----");arr.length=0;console.log(arr);console.log(arr.length);console.log("-----");</script>
结果:Array[0]
0
-----
Array[1]
1
-----
Array[0]
0
-----
解析:在上述代码段中,arr.push("Hello World!");所表示的就是一个数组,对应的length即为1。
//上述代码的错误用法arr=["Hello Everyone!"];
结果:“error”
解析:由于const赋值的变量一旦定义就无法改变,当再次对const所定义的数组继续赋值时,便会显示“错误”。
总结:对于const命令的重新赋值,不可以直接性的改变const定义的变量值,而是采用push()方法,给予变量不同的值,再输出相应的结果。
(3)const对象冻结
<script type="text/traceur">const person=Object.freeze({});person.name="Zhangsan";person.age=12;console.log(person.name); //undefinedconsole.log(person.age); //undefinedconsole.log(person); //Object</script>
解析:由于在定义person对象的时候,使用了freeze()函数,即对象冻结函数,使得person对象下边的属性name、age无法传递参数,显示“undefined”;此外,在person本身而言,还是一个对象,所以返回Object
(3——拓展1)const对象冻结使用[只冻结了“对象”]
<script tyoe="text/traceur">const person=Object.freeze({name:"Zhangsan",age:12});console.log(person.name); //Zhangsanconsole.log(person.age); //12console.log(person); //Object</script>解析:使用const冻结对象,只是冻结了对象,并没有冻结了对象的属性。
若要使用const对象进行冻结时,必须把需要使用的对象的属性全部列出来,再在外边进行使用。
(3——拓展1)const对象冻结使用[彻底冻结函数:冻结“对象+属性”]
var constantize=(obj) => {Object.freeze(obj); //首先把自己冻结;Object.keys(obj).forEach( (key,value) => { if(typeof obj[key] === 'object'){constantize(obj[key]); //采用递归调用};});};
- ES6——Day2(const命令+const对象)
- ES6 —(let、const)
- ES6学习(一)——let和const命令
- ES6的const命令
- ES6中的const命令
- es6:const 命令
- 5.ES6 const命令
- ES6入门——let和const命令
- es6-1(let和const命令)
- ES6(ECMAScript 6 ) const命令
- ES6之const 命令--读书笔记
- es6 let 和 const 命令
- ES6 let和const命令
- ES6(let 、const)
- 【ES6学习】— (1)ES6简介、let与const命令以及变量的解构赋值
- ES6学习之——let、const
- ES6——let和const
- ES6 — 新增关键字let、const
- Visual Studio 2017 正式版发布
- springboot(二):web综合开发
- 爱奇艺去广告和免费看VIP电影
- Greenplum 4.3.x 安装postgis
- HTTPS学习笔记
- ES6——Day2(const命令+const对象)
- VS Code
- 【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数
- MaterialInstance 的作用 【UE4】
- 华师大 OJ 2876
- ECPC16-A.The game of Osho(博弈)
- CSDN一直都很不错,加油了4
- Android获取data文件夹权限
- NOIP 2009 解题报告(潜伏者,hankson的趣味题,最有贸易,靶形数独)