文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

2025前端最新面试题-输出篇js

数组、对象、字符串输出

[10, 20, 30].map(parseInt) 返回结果是什么?

要点

  • map 的参数和返回值
  • parseInt 参数和返回值
javascript
const res = [10, 20, 30].map(parseInt)
console.log(res)

// 拆解
[10, 20, 30].map((num, index) => {
    return parseInt(num, index)
}) 
// 类似于 执行
// parseInt(10, 0) parseInt(20, 1) parseInt(30, 2)
// 执行结果  [10, NaN, NaN]

// 解析十进制字符串
const num1 = Number.parseInt('123');
console.log(num1); // 输出: 123

// 解析十六进制字符串
const num2 = Number.parseInt('0xFF', 16);
console.log(num2); // 输出: 255

// 解析八进制字符串
const num3 = Number.parseInt('077', 8);
console.log(num3); // 输出: 63

promise

【建议星星】要就来45道Promise面试题一次爽到底(1.1w字用心整理) - 掘金 (juejin.cn)

作用域与闭包

作用域

第1题

javascript
let i
for (i = 1; i <= 3; i++) {
    setTimeout(function(){
        console.log(i)
    }, 0)
}
// 执行结果 打印 3 个 4

第2题

javascript
let a = 100
function test() {
    alert(a)
    a = 10
    alert(a)
}
test()
alert(a)
// 执行结果, 弹出 3个弹窗 依次显示数字为 100 10 10

闭包

第1题

以下代码输出什么?

javascript
for (var i = 0; i < 10; i++) {
    setTimeout(() => {
        console.log(i)
    })
}
//  输出 10 个 10

将上面代码修改下, 输出结果为 0 ~ 9

javascript
// 方法一 闭包
for (var i = 0; i < 10; i++) {
    (function (i) {
		setTimeout(() => {
            console.log(i)
        })
    })(i)
}
javascript
for (let i = 0; i < 10; i++) {
    setTimeout(() => {
        console.log(i)
    })
}

扩展: let 有块作用域, var 没有块作用域

第2题

读代码

javascript
const User = {
    count: 1,
    getCount: function() {
        return this.count
    }
}
console.log(User.getCount()) // 1
const func = User.getCount
console.log( func() ) // undefined

this 的指向问题

只有执行阶段才能判断 this 的指向

在对象函数执行时, this 指向当前对象

  • this 指向执行阶段才能知道

  • 自由变量的查找, 要在函数定义的地方

赞赏博主
评论 隐私政策