let 和 const;函数默认参数

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

你可能感兴趣的:(let 和 const;函数默认参数)