美文网首页前端100问
【前端100问】Q41:下面代码输出什么

【前端100问】Q41:下面代码输出什么

作者: alanwhy | 来源:发表于2021-01-06 10:58 被阅读0次

写在前面

此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我
为了备战 2021 春招
每天一题,督促自己
从多方面多角度总结答案,丰富知识
下面代码输出什么
简书整合地址:前端 100 问

正文回答

var a = 10;
(function () {
  console.log(a);
  a = 5;
  console.log(window.a);
  var a = 20;
  console.log(a);
})();
// undefined
// 10
// 20

在立即执行函数中,var a = 20; 语句定义了一个局部变量 a,由于 js 的变量声明提升机制,局部变量 a 的声明会被提升至立即执行函数的函数体最上方,且由于这样的提升并不包括赋值,因此第一条打印语句会打印 undefined,最后一条语句会打印 20。

由于变量声明提升,a = 5; 这条语句执行时,局部的变量 a 已经声明,因此它产生的效果是对局部的变量 a 赋值,此时 window.a 依旧是最开始赋值的 10

执行解析步骤:

var a = undefined;
a = 10;
(function () {
  // 变量提升(预解析)
  var a = undefined;
  console.log(a); // 输出undefined
  a = 5;
  console.log(window.a); // 找window(全局)对象的a, 输出10
  a = 20;
  console.log(a); // 输出20
})();

相关文章

  • 【前端100问】Q41:下面代码输出什么

    写在前面 此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我[https://github.co...

  • this、call、apply实例解析

    一、以下代码输出什么? 二、下面代码输出什么,为什么 三、下面代码输出什么 四、下面代码输出什么,why 五、代码...

  • 45道JS面试题【整理篇】

    0.下面代码输出是什么? 1.下面代码输出是什么? 2.下面代码输出是什么? 3.下面代码输出是什么? 4.下面代...

  • H5学习(1)property&&attribute

    问: 下面这段代码会带来什么问题: 1.不要混淆JS和HTML的语法 看下面的这段代码。你认为输出的结果是什么? ...

  • self 和 Super

    刨根问底Objective-C Runtime(1)- Self & Super 下面的代码输出什么? @impl...

  • JS的OOP

    apply、call 、bind有什么作用,什么区别 以下代码输出什么? 输出:John: hi! 下面代码输出什...

  • 局部变量和常量的性能分析

    前两天群里有人问,下面的代码1 比代码2运行时间上慢了100ms,这是问什么?请看下面的两个代码片段: 代码1 代...

  • 第17章 作用域

    下面的代码会输出什么? x是的全局变量 下面的代码会输出什么? def内部的本地变量不影响全局变量 下面的代码会打...

  • 【前端100问】Q33:下面的代码打印什么内容,为什么?

    写在前面 此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我[https://github.co...

  • 关于finally

    下面代码输出什么? 答案: 记住: finally代码块总是执行!

网友评论

    本文标题:【前端100问】Q41:下面代码输出什么

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