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

相关推荐
keyipatience4 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
我的xiaodoujiao4 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
爱喝水的鱼丶5 小时前
SAP-ABAP:ALV通用封装实践——搭建可复用的ALV开发工具类,减少80%重复代码
开发语言·性能优化·sap·abap·erp·alv
脱胎换骨-军哥5 小时前
C++/Rust无缝互操作:混合系统新常态
开发语言·c++·rust
songroom6 小时前
Kimi K3:Rust封装XTP接口详细教程实践
开发语言·后端·rust
瑞瑞小同学6 小时前
处理echarts x轴内容过多,重叠问题
前端·javascript·echarts
kebeiovo6 小时前
游戏服务端开发:Actor模型详解(Go语言)
开发语言·后端·golang
迷途呀6 小时前
Python:函数中的参数类型
开发语言·笔记·python·langchain·nlp
Herbert_hwt7 小时前
建立Java程序开发
java·开发语言
像我这样帅的人丶你还7 小时前
MCP + npm:给五年前的老系统接上AI
前端·javascript·agent