var面试题

1var 存在变量提升(Hoisting),变量声明会被提升到作用域顶部,但赋值不会。
复制代码
console.log(a); // undefined
var a = 10;


等价于
var a;
console.log(a); // undefined
foo = a;
2函数声明 vs 函数表达式 + 变量提升考题(函数声明先提升var 只提升声明赋值留在原地执行)
复制代码
JS 在真正执行代码前会做一件事:

🔥 先"提升"变量声明和函数声明
1️⃣  函数声明优先级最高
function foo() {}
2️⃣ var 变量声明会提升
var foo
只提升声明,不提升赋值
console.log(foo); // ?
var foo = function () {
  console.log("foo");
};
foo(); // ?

function foo() {
  console.log("function foo");
}
foo(); // ?

关键点:

函数声明会覆盖 var 声明
但不会覆盖后面的赋值
// 函数声明提升(覆盖变量声明)
function foo() {
  console.log("function foo");
}

// var 声明被忽略(因为函数已经声明过 foo)
var foo;

console.log(foo);

foo = function () {
  console.log("foo");
};

foo();

foo();
开始逐行执行
console.log(foo);1
最终输出结果
ƒ foo() { console.log("function foo"); }
foo
foo
题1
复制代码
function a() {}
var a;
console.log(a);
a = 1;
console.log(a);
函数申明最上面提升到会直接覆盖变量申明
题2
✅ 第三组:作用域 + var
题3:闭包 + var
题4面试杀手题
题5(最后一个函数声明覆盖前一个:就是function a会被后面同样的函数申明 function b 覆盖)

6val申明:this 高级题
复制代码
for (var i = 0; i < 3; i++) {
  Promise.resolve().then(() => {
    console.log(i);
  });
}
7asycn事件循环(
  • await 之前是同步

  • await 之后是微任务

)async 函数本身是同步执行的

只有 await 之后才是异步

相关推荐
m0_706653233 分钟前
使用C-Free进行浮点变量的四则运算指南
c语言·开发语言
隔壁小邓2 小时前
前端Vue项目打包部署实战教程
前端·javascript·vue.js
流水迢迢lst2 小时前
靶场练习day15--php反序列化
开发语言·php
fengci.2 小时前
ctfshow(web入门)279-286
java·开发语言·学习
TON_G-T2 小时前
javascript中 Iframe 处理多端通信、鉴权
开发语言·前端·javascript
周淳APP2 小时前
【JS之闭包防抖节流,this指向,原型&原型链,数据类型,深浅拷贝】简单梳理啦!
开发语言·前端·javascript·ecmascript
ok_hahaha2 小时前
java从头开始-苍穹外卖day05-Redis及店铺营业状态设置
java·开发语言·redis
2501_933329552 小时前
舆情监测系统的技术演进:从数据采集到AI中台,Infoseek如何实现“监测+处置”一体化
开发语言·人工智能·自然语言处理·系统架构
kyriewen3 小时前
console.log 骗了我一整个通宵:原来它才是时间旅行者
前端·javascript·chrome
dgvri3 小时前
Windows上安装Go并配置环境变量(图文步骤)
开发语言·windows·golang