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 之后才是异步

相关推荐
山居秋暝LS1 分钟前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣5 分钟前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye1008610 分钟前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
AI科技星40 分钟前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡1 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
卡卡军1 小时前
agmd 1.0 重磅升级——Rust 重写,性能起飞
javascript·rust
Larcher1 小时前
🔥 告别抓瞎:用 Claude Code (cc) 优雅接手与维护已有项目
javascript·机器学习·前端框架
JYeontu1 小时前
轮播图不够惊艳?试下这个立体卡片轮播图
前端·javascript·css
kkeeper~1 小时前
0基础C语言积跬步之字符函数与字符串函数(上)
c语言·开发语言
亲亲小宝宝鸭1 小时前
如何监听DOM尺寸的变化?element-resize-detector 和 resizeObserver
前端·javascript