ES6中加入了let,const字符,先说说新的区别:

作用域:let 声明的变量只在它所在的代码块内有效,而且不存在变量提升,即变量可以在声明之前使用,值为undefined。let未声明变量前会报错。

如果区块内存在let和const命令,这个代码块对这些命令声明的变量从一开始就形成了封闭作用域。在声明前调用是会报错的。

let 不允许重复声明同一个变量,否则报错。

1,(块级作用域)为什么需要块级作用域?
ES5只有全局作用域和函数作用域,没有块级作用域。
场景一:内层变量会覆盖外层变量

var tmp = new Date();

function f() {
console.log(tmp);
if (false) {
var tmp = 'hello world';
}
} f();

场景二:循环变量会泄漏为全局变量

var s = 'hello';

for (var i = 0; i < s.length; i++) {
console.log(s[i]);
} console.log(i); //

let实际上为JavaScript新增了块级作用域,从而外层作用域无法读取内层作用域的变量。

在内层作用域中可以定义外层作用域同名变量,不会覆盖外层变量。

以前的立即执行函数可以直接用{}包起来。

const声明一个只读常量,一旦声明,就必须立即初始化,而且值不能改变。

如果只声明不赋值就会报错,作用域与let相同。

ES6中声明变量的方法有6种:var ,function,let,const,还有import和class

var, let ,const区别的更多相关文章

  1. let、var、const区别(表格比较)

    let.var.const区别(表格比较): 区别项 let var const 作用域 块级作用域 全局作用域或函数作用域 块级作用域 是否有变量提升 无 有 无 是否可重复声明 不可 可以 不可 ...

  2. var let const区别

      var let const 可否同一作用域下声明同名变量 可以 不可以 不可以 声明的变量是否会挂载到window上 会 不会 不会 声明变量是否存在变量提升 存在 不存在(变量必须声明之后才能使 ...

  3. 深度理解js中var let const 区别

    首先要理解js中作用域的概念 作用域:指的是一个变量的作用范围 1.全局作用域 直接写在script中的js代码,在js中,万物皆对象,都在全局作用域,全局作用域在页面打开时创建,在全局作用域中有一个 ...

  4. 在vue中let var 和const 区别

    let和const   使用方法: (1).有没有感觉到在     javascript  使用var会发生变量提升,即脚本开始运行时, 变量已经存在了,但是没有值,所以会输出undefined. 而 ...

  5. JavaScript—var lef const区别

    今天刚刚学JavaScript 因为以前学过.学起来也就轻松.今天在练习.流程控制语句的时候,用WebStrom 写的时候 var 声明变量的时候 下面老是有一条白线.开始以为是开发环境有问题 然后, ...

  6. var/let/const区别何在??(转载)

    原文地址:http://www.cnblogs.com/liuhe688/p/5845561.html let和const有很多相似之处,先说一说let吧. 1. let添加了块级作用域 我们知道,J ...

  7. 小程序里let和var以及const区别

    在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文 ...

  8. JavaScript var, let, const difference All In One

    JavaScript var, let, const difference All In One js var, let, const 区别 All In One 是否存在 hoisting var ...

  9. js var & let & const All In One

    js var & let & const All In One js var & let & const 区别对比 var let const 区别 是否存在 hois ...

  10. Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比

    Learn-JavaScript-with-MDN 系列文章: 01. var & let & const 对比 var & let & const 区别 https: ...

随机推荐

  1. LIS 问题

    #include<cstdio> #include<iostream> #include<algorithm> #include<queue> #inc ...

  2. Java程序员常用Linux性能分析命令

    性能分析 vmstat 虚拟内存统计 用法 Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive ...

  3. F5 BIG-IP LTM负载均衡策略

    standard 模式 可以很好的 防止 DDOS攻击 轮询设置是在POOL 中设置 按比率设置是在Node节点中设置

  4. 1)public,provite和protect不能放在函数函数头

    今天我才知道,原来这三个修饰的东西,只是用在类里面方法,怪不得一个叫方法,一个叫函数了,原来就是区分他们,哎, 今天遇到这么一个问题: <?php //header('Content-type: ...

  5. vscode中的live-server配置https?

    json文件中使用绝对路径添加证书 "liveServer.settings.https": { "enable": true, "cert" ...

  6. python学习笔记(10)函数(二)

    (函数的参数&递归函数) 一.函数的参数 Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处 ...

  7. 关于angular2跳路由防止页面刷新的做法(Angular2路由重载)

    simpleReuseStrategy.ts // 创建重用策略 import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStr ...

  8. JS实现select去除option的使用注意事项

    网上讲JS动态添加option和删除option的文章很多,在此推荐一篇: http://www.jb51.net/article/35205.htm 我使用的是如下方法: function remo ...

  9. JAVA SE Lesson 1

    1.  类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例(Instance).2.  类由两大部分构成:属性以及方法.属性一般用 ...

  10. 設定MacOS 終端機環境 (Homebrew/zsh/oh-my-zsh/iTerm2)

    安裝Homebrew 1 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/in ...