前端面经(Js习题部分)

var a = 10;
(function () {
console.log(a)
a = 5
console.log(window.a)
var a = 20;
console.log(a)})()
分别为 undefined 10 20,原因是作用域问题,在内部声名 var a = 20;相当于
先声明 var a;然后再执行赋值操作,这是在IIFE内形成的独立作用域,如果
把 var a=20 注释掉,那么 a 只有在外部有声明,显示的就是外部的A变量的值
了。结果A会是 10 10 5

使用 sort() 对数组[3, 15, 8, 29, 102, 22] 进行排序,输出结果
输出:[102, 15, 22, 29, 3, 8]
解析:根据 MDN 上对 Array.sort()的解释,默认的排序方法会将数组元素转换
为字符串,然后比较字符串中字符的 UTF-16 编码顺序来进行排序。所以'102' 会
排在 '15' 前面。

var obj = {
'2': 3,
'3': 4,
'length': 2,
'splice': Array.prototype.splice,
'push':
Array.prototype.push
}
obj.push(1)obj.push(2)console.log(obj)
结果:[,,1,2], length 为 4
伪数组(ArrayLike)

const p = new Promise(resolve => {
    console.log(0) // 1
    resolve()
  })
p.then(res => {
  console.log(1) // 2
}).then(res => {
  console.log(2) // 6
}).then(res => {
  console.log(3) // 7
})
p.then(res => {
  console.log(4) //3
})
p.then(res => {
  console.log(5) // 4
})
p.then(res => {
  console.log(6) //5
})

example 1
var a={}, b='123', c=123;
a[b]='b';
a[c]='c';
console.log(a[b]);
---------------------
example 2
var a={}, b=Symbol('123'), c=Symbol('123');
a[b]='b';
a[c]='c';
console.log(a[b]);
---------------------
example 3
var a={}, b={key:'123'}, c={key:'456'};
a[b]='b';a[c]='c';
console.log(a[b]);
答:
1. 对象的键名只能是字符串和 Symbol 类型。
2. 其他类型的键名会被转换成字符串类型。
3. 对象转字符串默认会调用 toString 方法。

async function async1 () {
    console.log('async1 start') // 1
    await async2();
    console.log('async1 end') // 5
}
async function async2 () {
    console.log('async2') // 2
}
console.log('script start') // 0
setTimeout(function () {
    console.log('setTimeout') // 7
}, 0)
async1();
new Promise (function (resolve) {
    console.log('promise1') // 3
    resolve();
}).then (function () {
    console.log('promise2') // 6
})
console.log('script end') // 4

const obj = {
    name : 'yy',
    getInfo(){
        return{
            name:'ll',
            getName(){
                console.log(this.name)
            }

        }
    }
}

obj.getInfo().getName() // ll

function bar() {
    console.log(myName); // 快手
}

function foo() {
    var myName = '快手';
    bar();
}

var myName = '用户增长';
foo();

function bar() {
    console.log(this.myName); // 快手
}

function foo() {
    this.myName = '快手';
    bar.call(this);
}

var myName = '用户增长';
foo();

v

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

前端校招面经分享 文章被收录于专栏

前端校招面经分享,包含CSS、JS、Vue、React、计算机网络、难点项目、手撕题等。这份面经总结了几乎大厂所有的面试题与牛客近几年公开的面经,可以说面试不会超出范围。 因为我只负责总结加一些个人见解,所以一开始免费开源。但互联网戾气真的重,很多人拿着面经还一副理所应当的样子质问我要语雀,还说网上同类的有很多??唉,分享不易,那我只好收费了233。当然也欢迎直接来找我要语雀,语雀会多一些内容。

全部评论
大佬大佬
点赞 回复 分享
发布于 2024-03-11 17:01 陕西
[]==[]结果不是为true吗,相当于''==''
点赞 回复 分享
发布于 2024-03-18 08:53 广东
大佬这道题实在没想懂,为什么会输出undefined呢?这样调用的话fun的作用域指向window,上面var name='222'的定义为什么不是在window中定义了name属性呢 var name = "222" var a = { name: "111", say: function(){ console.info(this.name); } } var fun = a.say; fun(); // undefined
点赞 回复 分享
发布于 2024-03-26 12:31 新加坡

相关推荐

咩咩子_:你到底想好了做什么吗?嵌入式,前端后端咋都有,项目介绍也不清楚。
点赞 评论 收藏
分享
从24年初开学开始接触到前端,和实验室几个同学一起学习,可似乎我总比他们慢一步,每每学完一个地方,我掌握的程度好像都不比他们,第一次实验室的任务实战,我两眼一抹黑,完全不知道从何下手,而他们却是游刃有余,可我当时没有丧气,只有一个念头,既然学习能力不如他们,那我就拿更多的时间去学,于是我把打游戏,运动锻炼的时间也拿来学习。到了暑假,实验室一起做项目,为了可以更好的参与进去,于是我暑假开始留校和同学师哥一起做项目,每天早上九点多去实验室,晚上十点多回宿舍,校田径队的训练没有去,中间也只回家待了一周。到暑假结束开学之后,一位很优秀的师哥拿到了几个offer,我从他身上看到了希望,双非本科就业的希望...
offer求求哩:我的评价是认知低,建议多看书,认知低的一个表现是人生仿佛没考上大学就是进厂,考上了就是考研考公找工作。股市里有一个很有意思的故事,说的是当门口大妈都在谈论股票的时候,说明行情已经见顶了。当你的父母在某些事上没有成功却支持你说明事情可能已经不可靠了,但在某些事上反对你,说明这件事可能还有成功的可能。(仅个人观点)😆😆
点赞 评论 收藏
分享
评论
10
26
分享

创作者周榜

更多
牛客网
牛客企业服务