前端面经(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。当然也欢迎直接来找我要语雀,语雀会多一些内容。