ECMAScript6学习笔记《二》-----“const命令与let命令”

  • let 声明的是变量,类似于var,但是这个只在代码块中有效。

if(true){
     var a = 2;
     let b = 3;
}
document.write(a);
document.write(b);  // 报错:ReferenceError: b is not defined   

  • const 声明的是常量,一旦声明,值将是不可变的。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <header>
            <!-- 加载Traceur编译器 -->
        <script src="http://google.github.io/traceur-compiler/bin/traceur.js" type="text/javascript"></script>
        <!-- 将Traceur编译器用于网页 -->
        <script src="http://google.github.io/traceur-compiler/src/bootstrap.js" type="text/javascript"></script>
        <!-- 打开实验选项,否则有些特性可能编译不成功 -->
        <script>
                traceur.options.experimental = true;
        </script>

        <script type="module">

// let命令
if(true){
var a = 2;
let b = 3;
}
document.write(a);
document.write(b);  // 报错:ReferenceError: b is not defined

           // const命令
            const PI = 3.1415;
            PI // 3.1415

            PI = 3;
            PI // 3.1415

            const PI = 3.1;
            PI // 3.1415
        </script>
    </header>
</head>
<body>

</body>
</html>

  • const 具有块级作用域
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <header>
            <!-- 加载Traceur编译器 -->
        <script src="http://google.github.io/traceur-compiler/bin/traceur.js" type="text/javascript"></script>
        <!-- 将Traceur编译器用于网页 -->
        <script src="http://google.github.io/traceur-compiler/src/bootstrap.js" type="text/javascript"></script>
        <!-- 打开实验选项,否则有些特性可能编译不成功 -->
        <script>
                traceur.options.experimental = true;
        </script>

        <script type="module">
            if (true) {
              const max = 5;
            }
            document.write(max);  // ReferenceError 常量MAX在此处不可得 
        </script>
    </header>
</head>
<body>
</body>
</html>
  • const 不可重复声明
            var message = "Hello!";
            let age = 25;

            // 以下两行都会报错
            const message = "Goodbye!";
            const age = 30; 

tip:const  指令指向变量所在的地址,所以对该变量进行属性设置是可行的(未改变变量地址),如果想完全不可变化(包括属性),那么可以使用冻结。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <header>
            <!-- 加载Traceur编译器 -->
        <script src="http://google.github.io/traceur-compiler/bin/traceur.js" type="text/javascript"></script>
        <!-- 将Traceur编译器用于网页 -->
        <script src="http://google.github.io/traceur-compiler/src/bootstrap.js" type="text/javascript"></script>
        <!-- 打开实验选项,否则有些特性可能编译不成功 -->
    <!--     <script>
                traceur.options.experimental = true;
        </script> -->

        <script type="module">
            const C1 = {};
            C1.a = 1;
            document.write(C1.a); // 1 
            // C1 = {};  // 报错  重新赋值,地址改变

            //冻结对象,此时前面用不用const都是一个效果
            const C2 = Object.freeze({}); 
            C2.a = 1; //Error,对象不可扩展
            document.write(C2.a);
        </script>
    </header>
</head>
<body>

</body>
</html>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值