ES6-let、const变量声明及声明特性

var

//声明变量
let a;
// or
let b, c, d;
// or
let e = [];

声明变量的特性

  1. 变量不能重复声明
<script>let name = "张三"; let name = "李四";</script>

在这里插入图片描述

Uncaught SyntaxError: Identifier 'name' has already been declared
未捕获的语法错误:已声明标识符“name”

  1. 块级作用域

在 es5 中有三种作用域,分别是全局,函数,eval(严格模式开启)

<script>
//   let name = "张三";
//   let name = "李四";
  {
    let boy = "王五";
  }
  console.log("boy", boy);
</script>

在这里插入图片描述
3. 不存在变量提升

console.log("name", name);
//   var name = "张三";
let name = "张三";

在这里插入图片描述

4.不影响作用域链

let name = "张三";
function fn() {
  console.log("name", name);
}
fn();

在这里插入图片描述
用let申明,但是不影响作用域效果,调fn函数,在fn内部输出name,由于函数作用域中没有,就沿着作用域链上一级找,就可以找到。

const

  1. 声明常量
const name = "张三";
  1. 一定要赋初始值
const a;
// Uncaught SyntaxError: Missing initializer in const declaration

一般常量使用大写

const AGE = 12;
  1. 常量不能修改
const b = 1;
const b = 2;
// Uncaught SyntaxError: Identifier 'b' has already been declared
  1. 对于数组和对象的元素修改,不算做对常量的修改,不会报错
const list = ["张三", "李四"];
list.push("王五");
// list (3) ['张三', '李四', '王五']

虽然数组元素发生改变,但是 list 常量指向的地址没有发生改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值