博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ES6】var / let / const
阅读量:5099 次
发布时间:2019-06-13

本文共 901 字,大约阅读时间需要 3 分钟。

1、var在声明所在的函数作用域内有效。  function(){}

   let与const都是只在声明所在的块级作用域内有效。{}

2、var与let声明的变量可以改变,值和类型都可以改变,没有限制。

     const声明的常量不得改变值,这意味着,const一旦声明常量,就必须立即初始化,不能留到以后赋值,且不能重复赋值。

const a;    // 报错,一旦声明变量,应该立即赋值!!const b = 10;b = 20;    // 报错,因为定义常量之后不能重新赋值!!

3、对于复合类型的变量,如数组和对象,变量名不指向数据,而是指向数据所在的地址。

  const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变。

const arr = [];arr = [1, 2, 3];   // 报错,因为变量arr指向的地址不能发生改变,应始终指向[]所在的地址!!![1,2,3]与[]不是同一个地址

  下面这样就不会报错:

arr[0] = 1;arr[1] = 2;arr[2] = 3;

  对象也是如此,示例如下:

const obj = {	a: 1,	b: 2}; obj = {       // 报错	a: 3,	b: 4}; obj.a = 3;       // 不报错obj.b = 4;       // 不报错

  

如果想让定义的对象或数组的内部数据也不能够修改和改变,可以使用Object.freeze(obj)进行冻结,这样为对象添加新属性就不起作用。

除了将对象本身冻结,对象的属性也应该冻结。

const obj = {	a: 1,	b: 2};obj.a = 9;console.log(obj);   // {a: 9, b: 2};  obj.a 发生改变Object.freeze(obj);  // 冻结obj.b = 99;console.log(obj);   // {a: 9, b: 2};  obj.b 未发生改变

  参考:

转载于:https://www.cnblogs.com/likwin/p/7172302.html

你可能感兴趣的文章
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>
[AIR] 获取U盘,打开U盘
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
asp.net 获取IP地理位置的几个主要接口
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
python学习4 常用内置模块
查看>>