博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 块级作用域
阅读量:5330 次
发布时间:2019-06-14

本文共 992 字,大约阅读时间需要 3 分钟。

作用域包括:全局作用域,函数作用域,块级作用域。

为什么要用块级作用域:

1.内层变量可能会覆盖外层变量。

var name = "kevin";function call() {    console.log(name); //undefined    var name = "fan";}call();

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

var str = "thisishh";for (var i = 0; i < str.length; i++) {    console.log(str[i]);}console.log(i); //8

块级作用域:

(function foo() {  let name = "kevin";  if (true) {    let name = "fan";  }console.log(name);    })(); //kevin
表明:变量外层代码不受内层代码,外层作用域无法读取内层作用域的变量,内层作用域可以定义外层作用域同名的变量。
 

es6允许块级作用域无限嵌套。{

{
{
{let name = "kevin"}}}}

块级作用域与函数声明

es5:函数只能在顶层作用域和函数作用域中声明,es6允许在块级作用域中声明函数。

es6规定:函数声明的行为类式与let,在块级作用域之外不可引用。

{    function foo(name) {        console.log(name);    }}foo("kevin"); //foo is not defined

在块作用域内声明函数,应该写成函数表达式的形式而不是声明的形式。这样确保在不同的浏览器环境下不出错。

//函数表达式 {    let foo = function(name) {        console.log(name);    }    foo("kevin"); //foo is not defined}
//函数声明 {    function foo(name) {        console.log(name);    }    foo("kevin"); //foo is not defined}

 

转载于:https://www.cnblogs.com/wangwenhui/p/8336623.html

你可能感兴趣的文章
javascript---删除元素所引起的 对于NodeList的理解
查看>>
博客几种可选代码配色方案
查看>>
drawRect & 内存 -> 深究
查看>>
类和对象
查看>>
项目经验输出
查看>>
HDU 1712 ACboy needs your help (分组背包模版题)
查看>>
Git 撤消操作
查看>>
TFS对签入文件忽略设置,解决pdb弹出警告
查看>>
使用扩展运算符实现数组,对象的深拷贝
查看>>
直接访问实例变量 VS 通过点语法访问实例变量
查看>>
gd库安装出错
查看>>
克鲁斯卡尔
查看>>
Spring自动事物代理
查看>>
codeforces#234_div2_C Inna and Huge Candy Matrix
查看>>
客户端判断
查看>>
C# 管道式编程
查看>>
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
查看>>
ASP.NET Web Forms的改进
查看>>
64位下的Visual Studio的编辑并继续
查看>>
Elasticsearch中Mapping
查看>>