而 let 和 const 如果离开了宣告的区域 { }
,变数就不存在。
可重新赋予值,也可重复宣告
var z = 10;
var z = 30000;
console.log(z); // 30000
宣告变数後,可重新赋予值,且前面不用再加 let (因为已宣告过),只须给等号重新赋予值
let a=20;
a=40;
console.log(a); // 40
不可重新赋予值
const b=1;
console.log(b);
b=3; // 会报错,因为 const 的值不可被修改
const obj = {
mail:'[email protected]'
};
obj.mail = '[email protected]'
console.log(obj.mail) // [email protected]
Object.freeze()
const obj = {
mail:'[email protected]'
};
Object.freeze(obj) // 冻结物件後,其内容就不能被修改
obj.mail = '[email protected]'
console.log(obj.mail) // [email protected]
冻结後,改变值不会有任何效果
最後用程序码来比较一下三者的差异:
var x;
console.log(x); // undefined
let y;
console.log(y); // undefined
const z;
console.log(z); // Uncaught SyntaxError: Missing initializer in const declaration
var x = 10;
var x = 20;
console.log(x); // 20
let y = 10;
let y = 20;
console.log(y); // Uncaught SyntaxError: Identifier 'x' has already been declared
const z = 10;
const z = 20;
console.log(z); // Uncaught SyntaxError: Identifier 'y' has already been declared
var x = 10;
x = 20;
console.log(x); // 20
let y = 10;
y = 20;
console.log(y); // 20
const z = 10;
z = 20;
console.log(z); // Uncaught TypeError: Assignment to constant variable.
总结一下~
固定不变的东西,变数用 const 宣告,会改变的用 let,没事别用 var。
<<: Day8:结构化并发 (Structured Concurrency)
好的!【足以维护资讯系统的人才】已经到位啦! 所以就就可以针对资讯资产来做管理! A.8 资产管理 ...
WebRTC技术经过多年的发展,已经非常成熟,它提供了HTML5流媒体技术的一整套解决方案及API,...
大家好! 今天要实作网页滚动到特定位置时,自动浮现元素的效果。 我们进入今天的主题吧! 样式 [da...
在前面我们用了很多的篇幅讲述 Proxmox VE 的客体虚拟机管理与使用,不过 Proxmox ...
在前一篇,我们提到了一些 Javascript 的语法和基本功能,包括宣告变数、资料型别、条件陈述式...