es6 ie不兼容 函数_ES6:什么是块级作用域?

在 ES5 只有全局作用域函数作用域,没有块级作用域,这带来很多不合理的场景。

我们先来看一下下面这种情况:内层变量可能会覆盖外层变量。

var txt = '外层变量-->你好呀';function fn() {console.log(txt);if (false) {var txt = '内层变量-->hello';}
}fn();//undefined

上面代码的原意是,if代码块的外部使用外层的 txt 变量,内部使用内层的 txt 变量。但是,函数 fn 执行后,输出结果为undefined,原因在于变量提升,导致内层的 txt 变量覆盖了外层的 txt 变量。

ES6 的块级作用域

let实际上为 JavaScript 新增了块级作用域

let txt = '外层变量-->你好呀';function fn() {console.log(txt);if (false) {let txt = '内层变量-->hello';}
}fn();

1b9141d72484276734d4566b5aa3f300.png

上面的函数有两个代码块,都声明了变量 txt,运行后输出 '外层变量-->你好呀'。这表示外层代码块不受内层代码块的影响。

块级作用域与函数声明

这个这就不多做解释了,因为用到的不是很多,没有什么必要深入了解,这里就简单说一下

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

而ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。ES6 规定,块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用。

function fn() {console.log('哈哈哈');
}(function() {if (false) {// 重复声明一次函数fnfunction fn() {console.log('啦啦啦');}}f();
}());

上面这段代码是 ES6 的写法,但是如果在 ES5 中运行也是能出来的

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

dc6f22dc6d2f47c39a116c57cb871d35.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个简单的规则引擎例子

本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景。例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用户选择,用户选择后会…

程序员面试必备的20条Python经典面试题

1、Python如何实现单例模式?Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式:1.class Singleton(type):def __init__(cls, name, bases, dict):super(Singleton, cls).__init__(name, bases, dict)cls.instance …

Active Directory系列之十七:实战详解域信任关系

实战详解域信任关系上篇博文中我们对域信任关系作了一下概述,本文中我们将通过一个实例为大家介绍如何创建域信任关系。拓扑如下图所示,当前网络中有两个域,一个域是ITET.COM,另一个域是HOMEWAY.COM。两个域内各有一个域控制器&am…

vim 寄存器 操作_vim指令

vim 是一个基于【动词】 【名词】 建立的语法表。Vim 中常用的名词方位名词表基于字符的移动:h:左j:下k:上l:右 ^ | k 提示: h 的键位于左边,每次按下就会向…

35岁老程序员因身体原因没加班,老板:不想干就滚蛋

近日,某论坛上一名 35 岁老程序员说出了他最近的遭遇,高强度的工作本来就让他感觉越来越劳累,加上又在医院做了一个小手术,于是就按照公司的正常上下班时间下了班,但是领导却说了一句让他难以接受的话,都三…

客制化键盘编程_指尖运动会,谁是打字冠军,双十一机械键盘推荐

机械键盘就只能玩游戏吗?当然不是,其实机械键盘出现还远远早于薄膜键盘,早期类似IBM、AST、HP、康柏一类的品牌机都是标配机械键盘的。早期的机械键盘确实有点笨重,尤其是白轴的机械键盘,让你毕生难忘。比黑轴更加坚硬…

分布式数据库一定会替代Oracle吗?

在传统数据库领域,Oracle一直占据了很大的市场份额,很多企业的业务系统基于此实现OLTP交易场景。近年来,随着分布式技术的发展,分布式数据库逐渐占据了OLTP领域较大的市场,尤其在互联网领域,MYSQL、PG等分布…

数模国赛要点与注意事项全分享!

暑假咻地一下就过去了,转眼数学建模国赛快到了。为了给大家最最直接的帮助,超模君特邀请到周老师为参加国赛的模友们准备了一场干货满满的赛前冲刺直播课。全天候直播,助大家一臂之力,全力冲刺数模国赛!周老师拥有多年…

android byte[] 转string 好多问号_#WIPI# Android使用HID设备

哈罗大家好。生活总是这样计划赶不上变化&#xff0c;今天为大家分享一下新加的小功能--使用Android设备连接HID设备。安卓内部已经内置了丰富的驱动&#xff0c;所以一般的设备我们只需要简单是设置就可灵活使用。首先对清单文件做简单修改<?xml version"1.0" e…

【Redis】有序集合的交集与并集

Redis支持多种类型的数据结构&#xff0c;最简单的字符串(strings)&#xff0c;适合存储对象的哈希(hash)&#xff0c;简单的字符串列表(list)&#xff0c;无序集合(set)&#xff0c;有序集合(sorted set)&#xff0c;以及用于做基数统计的HyperLogLog&#xff0c;其中使用频率…

从小害怕数学的他,却成为了科普数学教育的数学家

谈到数学&#xff0c;你们会想到什么&#xff1f;也许部分模友们会想到数学上的公式、定理、几何图形、微积分等等&#xff0c;也许会有模友们想到高数&#xff0c;&#xff08;多数大学生的痛&#xff09;也许大家还会想起高中数学老师课堂上的“循循教诲”——看书干嘛&#…

工作原理是什么_磁翻板液位计工作原理是什么?

液位计​大家都知道&#xff0c;是用来测量介质液位的仪表​&#xff0c;但是说到磁翻板液位计​这个概念可能大家都比较陌生&#xff0c;​磁翻板液位计​是根据浮力原理(阿基米德定律)结合磁性耦合作用研制而成&#xff0c;当被测量容器中的液位升降时&#xff0c;液位计主导…

我们该如何学习机器学习中的数学

数学在机器学习中非常重要&#xff0c;不论是在算法上理解模型代码&#xff0c;还是在工程上构建系统&#xff0c;数学都必不可少。通常离开学校后很难有机会静下心学习数学知识&#xff0c;因此我们最好能通过阅读小组或读书会等形式营造环境&#xff0c;并专注学习那些在实践…

标准梯度—lhMorpGradient

标准梯度 5*5正方形结构元素 标准梯度 7*7正方形结构元素 函数&#xff1a;lhMorpGradient 说明&#xff1a;形态学基本梯度运算&#xff0c;通过结构元素的改变&#xff0c;可以进行厚梯度&#xff0c;方向梯度等形态学计算 参数&#xff1a; src 输入图像 dst 输出图像 eleme…

神州云科DCN存储管理IP_干货!DCN校园网大二层解决方案详解

安徽水利水电职业技术学院始建于195年&#xff0c;是全国100所和安徽省3所国家示范性高职院校之一。学院坐落于安徽省省会合肥&#xff0c;交通便利&#xff0c;环境优美。校内设有九大实训中心&#xff0c;拥有实践性教学所必须的各类实验室、实训室、实习工厂等130个&#xf…

国产数据库占央采九成份额

3月&#xff0c;中央政府采购网发布《中国国家机关2021年数据库软件协议供货采购项目》成交公告&#xff0c;从入选采购名录的企业来看&#xff0c;除甲骨文和微软之外&#xff0c;其余入围的三十家企业均为本土企业。三十家本土企业中&#xff0c;既有阿里这种互联网巨头&…

应对程序员面试,你必须知道的8大数据结构

瑞士计算机科学家Niklaus Wirth在1976年写了一本书&#xff0c;名为《算法数据结构编程》。40多年后&#xff0c;这个等式仍被奉为真理。这就是为什么在面试过程中&#xff0c;需要考察软件工程师对数据结构的理解。几乎所有的问题都需要面试者对数据结构有深刻的理解。无论你是…

Windows Phone 知识锦(12月版)

很久没有更新Windows Phone 知识锦了&#xff0c;今天更新一下&#xff1a;将不同分类的文章进行归类&#xff0c;方便大家查看。 相信大家都喜欢jeffblankenburg的windows phone 31日开放谈吧&#xff0c;之前金山将它反映为中文了。如今他有退出了Mango版的31日开发谈&#…

自由、开源及其敌人 —— RMS事件簿

点击上方“开源社”关注我们| 作者&#xff1a;庄表伟| 编辑&#xff1a;沈于蓝| 设计&#xff1a;朱亿钦目前国际开源界和一些开源软件基金会对于道德和平权的争论正方兴未艾&#xff0c;我们觉得值得关注与了解。前置申明这是一篇严肃的八卦文&#xff0c;希望搞清楚一些社区…

Google 机器学习应用的43条经验法则

Google 的研究科学家 Martin Zinkevich 曾在 NIPS 2016 Workshop 分享了谷歌机器学习实践的四十三条法则。Martin Zinkevich 也在自己的博客上分享了这四十三条经验法则。文章《Rules of Machine Learning: Best Practices for ML Engineering》旨在帮助具备机器学习基础知识的…