let
let 和 var 一样, 也是是用来定义变量的。如
let a = 3
let 与 var 的区别
- let 定义的变量的作用域是代码块,var 定义的变量的作用域是函数。
- let 不存在变量提升。
- 不允许在相同作用域内,重复声明同一个变量。
const
用 const 来定义常量。如
const PI = Math.PI
const 实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。
如果想让内容不能变,用 Object.freeze(obj)
。
为了让代码更健壮,尽可能的用 let 和 const 来定义变量。
函数的默认参数
function Point(x = 0, y = 0) {
this.x = x;
this.y = y;
}
const p = new Point();
p // { x: 0, y: 0 }
与解构赋值一起使用
function foo({x, y = 5} = {}) {
console.log(x, y);
}
foo() // undefined 5
网友评论