js函数提升和变量提升

Earlier this week I was preparing to give a tech talk about some foundational JavaScript concepts to know for tech interviews. As always, when prepping content to share, I was obsessively going over the details to make sure all of my facts were correct. I would never want to steer anyone wrong. After all, these articles and talks are made to help people, not hinder them!

本周初,我正准备就一些基本JavaScript概念进行技术演讲, 以供技术采访了解 。 与往常一样,在准备共享内容时,我总是沉迷于细节以确保所有事实都是正确的。 我永远也不想引导任何人犯错。 毕竟,这些文章和谈话是为了帮助人们而不是阻碍他们!

var,let和const (var, let, and const)

As I was reviewing the slides for the difference between var, let and const, I found myself questioning the statement that var is the only one hoisted. This ‘fact’ was told to me by an interviewer awhile back, and I figured he must be right due to his extremely reputable title and company.

当我查看幻灯片中varletconst之间的区别时,我发现自己对var是唯一被悬挂的声明的说法提出了质疑。 一位面试官不久前告诉我这个“事实”,由于他的头衔和公司声誉极佳,我认为他一定是对的。

I knew that yes, var is definitely hoisted and initialized with an undefined value. I also learned that if you have an undeclared variable inside of a function, it will automatically be hoisted to the top of the scope during the compilation phase, and initialized as a global variable with an imaginary var like so:

我知道,是的, var肯定是用undefined值吊起和初始化的。 我还了解到,如果函数内部有未声明的变量,则它将在编译阶段自动提升到作用域的顶部,并使用虚构的var初始化为全局变量,如下所示:

In this example, when exterminator() is called, the now global variable of cockroachA (which was initialized with undefined) is initialized with its new value “I’m alive!”. cockroachA has escaped the exterminator. He lives!!

在此示例中,当调用exterminator()时, cockroachA现在的全局变量(已使用undefined初始化)将使用其新值“ I'm alive!”进行初始化。 cockroachA逃脱了除虫剂。 他住!!

但是let和const呢? (But what about let and const?)

As I was testing out code examples, I realized that when I referenced a variable above where they were declared, the variables with let and const weren’t throwing a reference error saying “not defined”. Instead the reference error said “Cannot access ‘a’ before initialization”. Hmm.

js函数提升和变量提升_关于在js中提升的真相相关推荐

  1. 我的世界服务器修改速度,我的世界速度提升指令是什么_我的世界速度提升指令介绍_玩游戏网...

    我的世界速度提升指令是什么?小编这里带来了我的世界速度提升指令介绍,还不太清楚的玩家们就进来看看吧! 我的世界速度提升指令是什么? 小伙伴们在游戏中可以通过作弊模式来输入各种指令,你想要获得的状态都是 ...

  2. len函数python返回值类型_简单介绍Python中的len()函数的使用

    01状态机介绍 游戏中的状态机一般都是有限状态机,简写为FSM(有限状态机),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型. 状态机的每一个状态至少需要有以下三个操作: ...

  3. js如何实现扫描身份证识别_通过node.js来调取baidu-aip-SDK实现身份证识别的功能...

    这篇文章主要介绍了关于通过node.js来调取baidu-aip-SDK实现身份证识别的功能,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近项目中客户需要实现身份证识别功能,合理计 ...

  4. java程序中类的成员变量定义在_.在类体中,变量定义部分所定义的变量称为类的________。...

    .在类体中,变量定义部分所定义的变量称为类的________. .成员变量在整个类内都有效,________变量只在定义它的方法内有效. .Java中成员变量又分为实例成员变量和________. . ...

  5. 注册登录页面代码用js判断是否填入信息_(实战)Node.js 实现抢票小工具amp;短信通知提醒...

    作者:西岚 https://juejin.im/post/5dadd0236fb9a04de04d968e 写在前言 要知道在深圳上班是非常痛苦的事情,特别是我上班的科兴科技园这一块,去的人非常多,每 ...

  6. 注册登录页面代码用js判断是否填入信息_(实战)Node.js 实现抢票小工具amp;amp;短信通知提醒...

    作者:西岚 本文经作者 @西岚 授权分享,文末点击阅读原文可跳转原文查看. 写在前言 要知道在深圳上班是非常痛苦的事情,特别是我上班的科兴科技园这一块,去的人非常多,每天上班跟春运一样,如果我能换到以 ...

  7. js清空文本框的值_一个Vue.js实例控制字变大变小,含样式操作,flex布局。「603」...

    这是一个用vue.js对css操作完成的实例. 当然用了flex简单布局. 一.先创建一个html文件,记得添加vue库文件. 二.创建一盒容器vmdiv,用vue绑定它,测试vue绑定后的插入值te ...

  8. python打印多个变量名_如何在Python中打印单个和多个变量?

    请考虑下面Python 2.x中的两个Python代码片段.# Code 1 print 1 # Output: 1# Code 2 print(1) # Output: 1 在Python 2.X中 ...

  9. python静态变量计数器_如何在Python中使用静态变量在计数

    今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题.如何在Python中使用静态变量来计数.然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量.说实话没 ...

  10. js小球与边框碰撞反弹_四叉树在碰撞检测中的应用

    缘起 <你被追尾了>中预告了加速碰撞检测的算法--四叉树(for 2D),所以本文就来学习一下. 分析 首先是为什么要使用四叉树进行优化,其实<你被追尾了>中已经说了,这里简单 ...

最新文章

  1. 遍历系统中所有的进程,可根据名字或ID查找某一个线程
  2. Android 7.0 Keyguard流程分析
  3. 小红帽linux操作教程_【免费】Linux从入门到精通教程!
  4. 两平面平行方向向量关系_一文读懂 GDT 中的平面度
  5. HDU 4121 Xiangqi 模拟题
  6. 使JavaDoc保持最新状态的工具
  7. tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...
  8. 正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()
  9. vuejs简单介绍特点
  10. BSTR与CString之前的转换
  11. Spring源码之动态AOP自定义标签
  12. iOS - NSURLSession 网络请求
  13. CentOS或Linux中,查看Tomcat版本的三种方式
  14. 冰点还原精灵如何卸载
  15. 课程笔记《李彦宏·智能交通7讲》
  16. php unlink 无法删除,php unlink()删除文件实例讲解
  17. 学生信息管理系统作业
  18. SqlServer中使用charindex和substring函数拆分字段
  19. 《动手学ROS2》第十章章节介绍 机器人导航NAV2
  20. 现实中如何评判路遥《人生》中的高加林?

热门文章

  1. 轻快PDF阅读器阅读pdf文件步骤
  2. python javascript区别_Python,Java和JavaScript这3个编程语言未来哪个更有前景?
  3. c语言模拟抛骰子,c语言模拟抛1000000次骰子
  4. 好好说话之unlink
  5. 计算机显示器工作的原理,液晶显示器的工作原理
  6. 网易2018实习生招聘笔试题
  7. 网易2019实习生招聘编程题集合
  8. 新媒体运营学习路线及全套视频教程资源
  9. 计算机格式为gpt怎么更改,硬盘格式转换,手把手教你如何将硬盘mbr格式转换为gpt格式...
  10. 【中国剩余定理】互素与不互素的情况详解