美文网首页
let和const命令

let和const命令

作者: 我不是全栈 | 来源:发表于2017-03-31 10:14 被阅读0次

1. 块级作用域 {}

{}语法在es6之前就已存在,但没有作用域的特性,例如:

{
    var a = 123;

    console.log(a);  // 123
}
console.log(a); // 123

在ie7+也是可以正常运行的(ie6我已放弃测试)

而在es6中,在{}中使用let和const申明的变量的作用域会被{}限制在其中,而var不会被限制

{
    let a = 123;
    const b = 11;
    var c = 33;

    console.log(a); // 123
    console.log(b); // 11
    console.log(c); // 33
}

console.log(a); // a is not defined
console.log(b); // b is not defined
console.log(c); // 33

2. 不存在变量提升现象

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // bar is not defined
let bar = 2;

// const 的情况
console.log(bar); // bar is not defined
let const = 2;

3. 块级作用域的函数申明

ES5 规定,函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明, 例如

if (true) {
    function f() {
        console.log('hello')
    }
}

f();  // 输出 hello

上面两种函数声明,根据 ES5 的规定都是非法的。但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。但如果在严谨模式下是会报错的;

'use strict'
if (true) {
    function f() {
        console.log('hello')
    }
}

f(); // 报错 f is not  defined

在es5中的{}申明函数,是会有申明提前的现象,例如:

if(false) {
    function a() {
        console.log('123')
    }
}

a(); // 输出123 无视if条件

在es6中:

if(false) {
    function a() {
        console.log('123')
    }
}

a(); // a is not defined

相关文章

  • let和const

    新的赋值语句let和const let和const命令

  • ES6的let 和 const 命令

    let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...

  • ES6需要记忆理解的地方

    let和const命令 1、let和const均无变量提升。2、let变量指向的地址可变,const指向的地址不可...

  • 重读 ES6(一)

    一、let 和 const 命令 let 命令 let 与 var 的区别:let 声明的变量只在 let 命令所...

  • js 中var contst let 之间的区别

    ECMAScript 6 新增 const 和 let 命令,用来声明变量。 那么const,let和var 在声...

  • es6常用语法(一)

    let 和 const 命令 let 命令 只在let命令所在的代码有效 let命令,用来声明变量。它的用法类似于...

  • es6总结一

    es6基础 let和const命令 let和const用于声明变量let跟var的区别 1、let定义过的变量不能...

  • ES6笔记

    let 和 const ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一...

  • ECMAScript 6 入门

    1.let 和 const 命令 let 命令 基本用法 ES 6 新增了 let 命令,用来声明变量,它的用法类...

  • ES6基础入门

    变量 let 命令 const 命令 函数

网友评论

      本文标题:let和const命令

      本文链接:https://www.haomeiwen.com/subject/dzvmottx.html