• var与let、const的区别


    JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中新增了块级作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。

    一、var声明的变量会挂载在window上,而let和const声明的变量不会:

    var a = 100;
    console.log(a,window.a);    // 100 100
    
    let b = 10;
    console.log(b,window.b);    // 10 undefined
    
    const c = 1;
    console.log(c,window.c);    // 1 undefined

    二、var声明变量存在变量提升,let和const不存在变量提升

    console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
    var a = 100;
    console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
    let b = 10;
    console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
    const c = 10;

    1.var定义变量,没有块的概念,可以跨块访问,不能跨函数访问,不初始化出现undefined,不会报错。

    2.let定义变量,只能在块作用域里访问,也不能跨函数访问,对函数外部无影响。

    3.const定义常量,只能在块作用域里访问,也不能跨函数访问,使用时必须初始化(即必须赋值),而且不能修改。

    <script type="text/javascript">
        // 块作用域
        {     var a = 1;
            let b = 2;
            const c = 3;
            // c = 4; // 报错,const不能修改
            var aa;
            let bb;
            // const cc; // 报错,必须初始化(即必须赋值)
            console.log(a); // 1
            console.log(b); // 2
            console.log(c); // 3
        }
        console.log(a); // 1
        // console.log(b); // 报错,只能在块作用域里访问
        // console.log(c); // 报错,只能在块作用域里访问
    
        // 函数作用域
        (function A() {
            var d = 5;
            let e = 6;
            const f = 7;
            console.log(d); // 5
            console.log(e); // 6  (在同一个{ }中,也属于同一个块,可以正常访问到)
            console.log(f); // 7  (在同一个{ }中,也属于同一个块,可以正常访问到)
    
        })();    // console.log(d); // 报错,不能跨函数访问   // console.log(e); // 报错,不能跨函数访问   // console.log(f); // 报错,不能跨函数访问 
    </script>
  • 相关阅读:
    Oracle SQL语句大全—查看表空间
    Class to disable copy and assign constructor
    在moss上自己总结了点小经验。。高手可以飘过 转贴
    在MOSS中直接嵌入ASP.NET Page zt
    Project Web Access 2007自定义FORM验证登录实现 zt
    SharePoint Portal Server 2003 中的单一登录 zt
    vs2008 开发 MOSS 顺序工作流
    VS2008开发MOSS工作流几个需要注意的地方
    向MOSS页面中添加服务器端代码的另外一种方式 zt
    状态机工作流的 SpecialPermissions
  • 原文地址:https://www.cnblogs.com/DZzzz/p/12837706.html
Copyright © 2020-2023  润新知