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

相关推荐
C^h7 小时前
c++ string
开发语言·c++
raindayinrain8 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的8 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao8 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
她说可以呀8 小时前
Vue插槽
前端·javascript·vue.js
qq_448011168 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
学逆向的9 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的9 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”9 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
小王C语言9 小时前
Qt常用控件:容器类控件,标题分组框、标签页(浏览器标签)
开发语言·qt