var 、let 、const

之前一直没注意var和let区别,一直都是混用的,整理一下,写的有些繁琐,有机会再整理。

var

  • 使用 var 关键字来声明变量,会出现重复声明导致变量被覆盖却不会报错的问题。

在小型的应用中,你可能不会遇到这样的问题。但是当你的代码规模变得更加庞大的时候,就可能会在不经意间覆盖了之前定义的变量。 因为这样的情况不会报错,所以搜索和修复 bug 会变得非常困难。

  • 使用 var 关键字来声明一个变量的时候,这个变量会被声明成全局变量,或是函数内的局部变量。

let

在 ES6 中引入了新的关键字 let 来解决 var 关键字带来的潜在问题。 

  •  与 var 不同的是,当使用 let 的时候,同一名字的变量只能被声明一次。
  • let 关键字的作用与此类似,但会有一些额外的特性。 如果在代码块、语句或表达式中使用关键字 let 声明变量,这个变量的作用域就被限制在当前的代码块、语句或表达式之中。(局部,所以有时候会is not defined)

 const

  • const 拥有 let 的所有优点,不同的是,通过 const 声明的变量是只读的。 这意味着通过 const 声明的变量只能被赋值一次,而不能被再次赋值。
const FAV_PET = "Cats";
FAV_PET = "Dogs";

控制台将由于给 FAV_PET 重新赋值而显示错误。

可见,尝试给用 const 声明的变量重新赋值会报错。 你应该使用 const 关键字来声明所有不打算再次赋值的变量。 这有助于避免给一个常量进行额外的再次赋值。 一个最佳实践是对所有常量的命名采用全大写字母,并在单词之间使用下划线进行分隔。

**注意:**通常,开发者会用大写字母作为常量标识符,用小写字母或者驼峰命名作为变量(对象或数组)标识符。

  • 对象(包括数组和函数)在使用 const 声明的时候依然是可变的。 使用 const 来声明只会保证变量不会被重新赋值。 

和所有数组一样,数组 s 中的元素是可以被改变的,但是因为使用了 const 关键字,你不能使用赋值操作符将变量标识 s 指向另外一个数组。

  • const 声明并不会真的保护数据不被改变。 为了确保数据不被改变,JavaScript 提供了一个函数 Object.freeze()

当一个对象被冻结的时候,你不能再对它的属性再进行增、删、改的操作。 任何试图改变对象的操作都会被阻止,却不会报错。

请注意 "use strict"。 这代表着开启了严格模式,用于检测常见的代码错误以及“不安全”的行为, 例如:

"use strict";
x = 3.14;

这将显示一个错误 x is not defined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值