Day 12 - var 、let、const

  • var 为全域变数,超不谨慎,宣告变数後值可被改变,也可以重复宣告。
  • let 为区域变数,较谨慎,宣告变数後,其值可被改变,不可重复宣告。
  • const 唯读,较严格,宣告後,其值不可变动,也不可重复宣告,但在物件或阵列时,可修改里面的内容。

而 let 和 const 如果离开了宣告的区域 { },变数就不存在。

var

可重新赋予值,也可重复宣告

var z = 10;
var z = 30000;
console.log(z); // 30000

let

宣告变数後,可重新赋予值,且前面不用再加 let (因为已宣告过),只须给等号重新赋予值

let a=20;
a=40;
console.log(a); // 40

const

不可重新赋予值

const b=1;
console.log(b);
b=3; // 会报错,因为 const 的值不可被修改
  • 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]

冻结後,改变值不会有任何效果


最後用程序码来比较一下三者的差异:

  • initializer(初始化)
    只有 const 需要 initializer , var 和 let 不需要
    白话文:var 和 let 可以在宣告变数时不赋予值,但 const 在宣告时就必须赋予值给它,否则会出错。
var x;
console.log(x); // undefined
let y;
console.log(y); // undefined
const z;
console.log(z); // Uncaught SyntaxError: Missing initializer in const declaration 
  • re-declaration(重复宣告)
    只有 var 可以 re-declaration,let 和 const 不行。
    所以要避免使用 var!!!!!
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
  • re-assignment(重新赋予值)
    var,let 可以 re-assignment,const 不行
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)

>>:  人人有矿挖

[Day20]ISO 27001 附录 A.8 资产管理

好的!【足以维护资讯系统的人才】已经到位啦! 所以就就可以针对资讯资产来做管理! A.8 资产管理 ...

WebRTC一对一视频通话(Flutter+React+Go+WebRTC方案)

WebRTC技术经过多年的发展,已经非常成熟,它提供了HTML5流媒体技术的一整套解决方案及API,...

JS 37 - 滚动网页即自动浮现元素

大家好! 今天要实作网页滚动到特定位置时,自动浮现元素的效果。 我们进入今天的主题吧! 样式 [da...

Proxmox VE 安装容器:Ubuntu 20.04

在前面我们用了很多的篇幅讲述 Proxmox VE 的客体虚拟机管理与使用,不过 Proxmox ...

[Day 10 - JS] 初探 Javascript 基本功能 — 函式、回圈 / 阵列、物件

在前一篇,我们提到了一些 Javascript 的语法和基本功能,包括宣告变数、资料型别、条件陈述式...