美文网首页
块级作用域简述

块级作用域简述

作者: 刘昱涵 | 来源:发表于2018-12-24 04:07 被阅读0次

一、为什么需要块级作用域

ES5只有全局作用域和函数作用域,没有块级作用域,会带来以下问题:

1、变量提升导致内层变量可能会覆盖外层变量

var i = 5;
function new() {
console.log(i);
if (true) {
var i = 6;
}
}
new();// undefined

2、用来计数的循环变量泄露为全局变量

for (var i = 0; i < 5; i++) {
console.log(i);
}
console.log(i); // 5

二、ES6中的块级作用域

ES6允许块级作用域的任意嵌套。外层作用域无法读取内层作用域的变量。

{let i = 6;}
console.log(i); // error

内层作用域可以定义外层作用域的同名变量。

let i = 5;
{let i = 6;}

块级作用域的出现使得立即执行函数不再需要。

立即执行函数:

(function() {
var i = 5;
})();

块级作用域:

{
let i = 5;
}

ES6引入了块级作用域,明确允许在块级作用域中声明函数。

ES6还规定,在块级作用域中,函数声明的行为类似于let,在块级作用域之外不可引用。

ES6中,函数声明会提升到函数作用域的头部。

注意:ES6的块级作用域允许声明函数只在使用大括号的情况下成立,如果未使用大括号,会报错。

相关文章

  • 块级作用域简述

    一、为什么需要块级作用域 ES5只有全局作用域和函数作用域,没有块级作用域,会带来以下问题: 1、变量提升导致内层...

  • js 作用域

    js 作用域主要有:全局作用域和局部作用域,es5之前没有块级作用域,es6有了块级作用域 何为块级作用域,块级作...

  • let、const和var的区别(个人笔记)

    1. 区别 (1)块级作用域块作用域由{ }包括,let和const具有块级作用域,var不存在块级作用域。块级作...

  • let,var和const

    var没有块级作用域,只有方法作用域常见的块级作用域,if(){}。for(){}。

  • 第七章 块级作用域、私有变量

    模仿块级作用域 私有变量  js没有块级作用域,只有全局作用域和局部作用域(函数作用域),块级作用域是指某一部分代...

  • 你真的懂let和const吗?

    块级作用域 在ES6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢...

  • js高级知识点(第五天)

    所用域 什么是作用域 变量起作用的范围 什么是块级作用域,使用代码块限定的作用域是块级作用域(let声明的变量是块...

  • ES6->块级作用域

    块级作用域 为什么需要块级作用域? ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第...

  • es6新增特性

    一、变量的改变 let 用来声明变量(块级作用域) const 用来表示常量(块级作用域) 块级作用域 就是在{}...

  • vue.js let与for的用法

    (一)块级作用域1.let声明的变量拥有块级作用域,块级作用域是一对大括号2.块级作用域可以直接写一对大括号,以后...

网友评论

      本文标题:块级作用域简述

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