var let const 区别

Posted 郭郭郭牧鑫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了var let const 区别相关的知识,希望对你有一定的参考价值。

首先,一个常见的问题是,ECMAScript 和 javascript 到底是什么关系?

      ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。

        2011 年,ECMAScript 5.1 版发布。之前我们大部分人用的也就是ES5

        2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。

ES6的好处
ES6的出现为我们前端带来了很多方便之处,以前用js几十行才实现的一个功能,ES6几行代码就能简单的实现,ES6新增的一些特性,改变了很多弊端之处,比如新出现的let、const,实现了块级作用域功能,减少了以前var的全局变量,箭头函数代替词法作用域的"this" 等等,在这里就不再做更多的举例子,想了解更多请参考 https://www.w3cschool.cn/ecmascript/pgms1q5d.html,今天主要跟大家一起了解一下var、let、const之间的区别

var、let、const的区别

  1. var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
  2. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
  3. const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改
    
    <script type="text/javascript">
        // 块作用域
        
            var a = 1;
            let b = 2;
            const c = 3;
            // c = 4; // 报错
            var aa;
            let bb;
            // const cc; // 报错
            console.log(a); // 1
            console.log(b); // 2
            console.log(c); // 3
            console.log(aa); // undefined
            console.log(bb); // undefined
        
        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>

    很明显在函数外输出变量i的时候,报i未定义,var在函数内命名的变量是只在整个函数作用域内起作用

    let不像var那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。

    let在同一块作用域内不能重复声明变量,var 可以重复声明 

     const

    const与let上面特点一样,但是也有不同点,let声明的是变量,const声明的是常量,只读,修改值会报错,const保存的是内存地址,可以给对象或数组添加属性或元素,但是不能重新复写。

     

以上是关于var let const 区别的主要内容,如果未能解决你的问题,请参考以下文章

let const,var 的区别

js 中var contst let 之间的区别

ES6中的let和const

var const let 区别

let,const 与 var的区别

var,let和const的区别是什么?