ES6

LogicVoyagerPro
• 阅读 1013

今天有时间又看了一下es6的语法,稍微做了一点总结,便于日后查阅:
let / const 声明变量,一下所讲的所有的特点都是相较于var来说的

var:

1:变量提升: var/function 声明的变量会被提升到它的调用之前
    console.log(aa); //undefined
    var aa;
    ==等价于==
    var aa;
    console.log(aa); //undefined
    aa = 12;
    console.log(aa); //12
    
2: 全局作用域 / 函数作用域
    函数内部可以访问全局作用域的变量,大那是全局作用域只可以访问全局变量,

let 特点:

1 . 不存在变量的提升
    console.log(bb); //报错
    let bb;

2 . 暂时性死区
    在一个块级作用域内声明的变量就会绑定在这个区域内了,在let没有声明变量之前这个变量都是不可用的
    1) : console.log(aa); // 报错
         let aa;
        
    2) : function fn(aa){
             let aa;
         }
         fn();// 报错,aa已经声明过了,这也说明了函数的参数实是在这个函数内部声明一个变量
     
   3) : function bar(x = y, y = 2) {
          return [x, y];
        }
        bar(); // 报错 在赋值x = y 的时候,y 还没有被声明.
        //function bar(x = 2, y = x) {
        //  return [x, y];
        //} 这样是可行的
        
 3 . 不允许重复声明;在同一个块作用域( "{  }" )内不可以重复声明同一个变量
     1) : let aa = 1;
          let aa;
          console.log(aa); //报错, aa已经声明
     2) : function fn(bb){
            let bb;
          }
          fn();//报错 ,bb 已经声明
          
 4 . 块级作用域
     会计作用域内部可以访问包含它的组用域内的变量,但是却不能访问包含于它的块级作用域的变量
    let tmp = "hello";
      //console.log(aa); //找不到aa
      //console.log(bb); //找不到bb
      function f() {
        console.log(tmp); //hello
        //console.log(bb); //找不到bb
        let aa = 123;
        if (true) {
          let bb = 567;
          console.log(tmp); //hello
          console.log(aa); //123
        }
      }
      f();

const 特点:
基本以let是一致的,只有一点const声明的变量是只读的,一但声明就必须初始化(赋值),边切后面也不可以在重新赋值

点赞
收藏
评论区
推荐文章
Souleigh ✨ Souleigh ✨
4年前
JavaScript - 关于 var、let、const 的区别使用
一、var在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量注意:顶层对象,在浏览器环境指的是window对象,在Node指的是global对象var a  10;console.log(window.a) // 10使用var声明的变量存在变量提升的情况console.log(a) // undefine
郜小超 郜小超
4年前
面试问题总结(持续更新中。。。)
1.letconstvar的区别在JavaScript中,有三个关键字可用于声明一个变量,并且每个关键字都有其不同之处。分别var,let和const。一个简单粗暴的解释:使用const关键字声明的变量不能被重新赋值,let而且var可以。也可以这么说:const只可以声明一个常量(js中一旦被定义就无法再被修改的变量,称之为常量)。eg:
晴空闲云 晴空闲云
3年前
javascript实践教程-03-变量
本节目标1.掌握声明变量的方式。2.掌握var和let的区别。内容摘要本篇讲解了变量声明的两种方式var和let,并对比var和let声明变量的差别,最后对变量名名称规则进行了总结。阅读时间1015分钟变量基础js中声明变量可以使用var和let关键词。其中var是es5的语法,let是es6的语法。var声明变量var可以用来声明局部变量和全局变
Jacquelyn38 Jacquelyn38
4年前
重学JavaScript第1集|变量提升
变量提升就好比JavaScript引擎用一个很小的代码起重机将所有var声明和function函数声明都举起到所属作用域(所谓作用域,指的是可访问变量和函数的区域)的最高处。这句话的意思是:如果在函数体外定义函数或使用var声明变量。则变量和函数的作用域会提升到整个代码的最高处,此时任何地方访问这个变量和调用这个函数都不会报错;而在函数体内定义函数或使用va
Wesley13 Wesley13
3年前
ES6之常用开发知识点:入门(一)
ES6介绍ES6,全称ECMAScript6.0,2015.06发版。let和const命令let命令let命令,用来声明变量。它的用法类似于var,区别在于var声明的变量全局有效,let声明的变量只在它所在的代码块内有效。使用var声明:vara
Wesley13 Wesley13
3年前
ES6 常用语法
什么是ES6ECMAScript6简称ES6,在2015年6月正式发布~ ECMAScript是JavaScript语言的国际标准。我们本着二八原则,掌握好常用的,有用的~能让我们更快的上手~~~1 声明变量const let varES6以前var关键字来声明变量,无论声明在何处都存在变量提升这个事情~~会
Stella981 Stella981
3年前
ES6+(前端面试题整合)
谈一谈let与var和const的区别let为ES6新添加申明变量的命令,它类似于var,但是有以下不同:let命令不存在变量提升,如果在let前使用,会导致报错let暂时性死区的本质,其实还是块级作用域必须“先声明后使用”的性质,let暂时性死区的原因:var会变量提升,let不会。
Wesley13 Wesley13
3年前
ES6的语法
一,定义变量let(类似var)在js一直有一个bug是var:1、var声明的变量会有变量提升console.log(name);//jhonvarname'jhon';2、var没有块级作用域varname2'jjjon';{varname2'tom';
Wesley13 Wesley13
3年前
ES6学习笔记(一)
1.let和const命令let用法和var类似,但是声明的变量只在let命令所在的代码块内有效{leta10;varb1;}a//ReferenceError:aisnotdefined.b//1上面代码在代码块之中,分别用let和var声明了两
Wesley13 Wesley13
3年前
ES6新增的一些特性
1、let关键字,用来代替var的关键字,特点: 1、变量不允许被重复定义2、不会进行变量声明提升3、保留块级作用域中i的2、const定义常量,特点:1、常量值不允许被改变2、不会进行变量声明提升3、箭头函数  与普通函数的区别:1、书写上用代替了function         2、普通函数的this指向window而ES6
Wesley13 Wesley13
3年前
ES6快速入门
快速了解ES6部分新特性。。。let和const letES6新增了let命令,用于声明变量。其用法类似var,但是声明的变量只在let命令所在的代码块内有效。{letx10;vary20;}x//ReferenceE