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,太晚了,明天看了。感谢小马哥。

 

posted @   Dmail  阅读(213)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示