ES6基础----let、const命令

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script >
    一、 let命令特点:
    1- 1et声明的变量只在let命令所在的代码块内有效;
    {
      let a = 10;
      console.log(a);
    }
     console.log(a);//报错
    
    2- 不存在变量提升现象,变量只可以在声明之后使用;
    function test (){
      console.log(b); 报错
      let b = 19;
      console.log(b)
    }
    test();
    3- 暂时性死区 声明全局变量后如果要在块级作用域中声明相同的变量,在变量声明之前不允许任何操作
    var c = 'test';
    function fn(){
      // c = 'zhang';//报错
      let c = 'wang';
    }
    fn();
     4-不允许重复声明
    二、 count 命令特点
    1- 声明一个只读的常量,一旦声明,常量的值不能改变
    const NAME = "chengyuanyuan"
    NAME = "cyy";报错
    console.log(NAME);
    2- 声明以后立即初始化,不允许留到以后赋值
    const FLAG ; 报错
    3- 只在声明变量的当前作用域内有效、const变量不会提升、存在暂时性死区、不可以重复声明(与let特点一致);
    const本质:const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
    对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。
    但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,
    const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。
    因此,将一个对象声明为常量必须非常小心。
    const foo = {name:"zhangsan"};
    foo.prop = "123";//不会报错
    console.log(foo);//{name: "zhangsan", prop: "123"}
    foo = {} //会报错,不允许改变foo指向的地址
    如果想要对象冻结,可以使用Object.freeze方法,冻结后对象添加的新属性不起作用或报错
    const foo2 = {namg:"wangwu"}
    Object.freeze(foo2);
    foo2.age=23;//Es6 报错 ES5生效
    console.log(foo2);//{namg:"wangwu"}

    三、顶层对象的属性
    浏览器顶层对象的属性是window,Node指的是global对象
    非严格模式下var 和 function 命令声明的全局变量是顶层对象的属性;
    任何模式下let 、const、class 命令声明的全局变量都不是顶层对象的属性。从Es6开始,全局变量将于顶层对象的属性脱钩;
    var f = "22";
    console.log(window.f);   严格模式下返回undefined,非严格模式返回22
    function fn1 () {
      return f;
    }
    console.log(window.fn1()); 严格模式下执行window.fn1()报错,非严格模式返回22
    let g = "33";
    console.log(window.g);  任何环境下都返回undefined;
  </script>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值