zoukankan      html  css  js  c++  java
  • 01-let和const.html

    1.什麽叫做ES6?

    ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。

    參考:https://www.runoob.com/w3cnote/es6-tutorial.html

    2.1 let的用法

    <script type="text/javascript">
        /*console.log(a)
        //Uncaught ReferenceError: a is not defined
        //会提示a未被定义
        */
        //
        //let声明的变量,属于块级作用于域、不存在变量提升、不允许复数声明;
            {
                let a = 10;
                /*let a = 20;
                //Uncaught SyntaxError: Identifier 'a' has already been declared
                //会提示a被重复定义了
                */
                console.log(a);
            }
        </script>

    笔记:

    let声明的变量,属于块级作用于域、不存在变量提升、不允许复数声明;
    如果在块以外打印 let声明的变量 a 会提示,a未被定义
    Uncaught ReferenceError: a is not defined
    如果块内已经用let声明过的变量a ,再次用let声明,会提示 a 是已经声明过的标识符。
    Uncaught SyntaxError: Identifier 'a' has already been declared
    为什么需要块作用域?
    原因一:内存变量可能会覆盖外层变量。
            function foo(a){
                console.log(a);
                if (a==2){
                    var a = 'hello es6';
                    console.log('看看我被覆盖了没')
                    console.log(a);
                }
            }
            var a = 2;
            foo (a);
    原因二:用来计数的循环遍历会泄露为全局变量。
            var arr = [];
            //var i;
            //i没有定义全局变量,for语句里面定义的循环变量,因变量提升,变成了全局变量
            for (var i = 0; i < 10; i++){
                arr[i] = function () {
                    return i;
                }
            }
            //期望值希望是5,输出的却是10,不管是a[5]还是a[1] a[2] a[3]都会输出10
            //当调用 arr[5]函数时,函数内没有声明i,所以直接引用了全局变量i
            console.log(arr[5]());
    原因二也有用js的闭包办法来解决问题,代码如下:
            var arr = [];
            for (var i = 0; i < 10; i++){
                arr[i] = (function (j) {
    
                    return function(){
                        return j;
                    }
                })(i)
            }
            console.log(arr[5]());

    2.1 const 基本用法-声明只读的常量

    这意味着,const-旦声明变量,就必须立即初始化,不能留到以后赋值。对于const来说,只声明不赋值,就会报错。

            const a =10;
            //不会报错
            const b;
            //报错

    与let的相同点

    • 块级作用域
    • 暂时性死区
    • 不可重复声明

    let和const的使用建议。

    在默认情况下用const,而只有你在知道变量会被修改的情况下,才用let。

    其他笔记截图:

      

     输出结果 res 是一个新的对象。


    视频看到48:04,太晚了,明天看了。感谢小马哥。
  • 相关阅读:
    Python操作Word:常用对象介绍
    Python入门教程 超详细1小时学会Python
    用几何画板画七边形的方法
    用ChemDraw画3D图的方法
    Chem 3D模型的参数值更改方法
    Chem 3D中怎么创建立体模型
    在几何画板中输入绝对值的方法
    怎么给几何画板文字加立体阴影效果
    几何画板放大和缩小的方法
    ChemDraw Pro和ChemBio3D Ultra有什么区别
  • 原文地址:https://www.cnblogs.com/Dmail/p/13190842.html
Copyright © 2011-2022 走看看