前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >整理几个被遗忘的js基础代码题,还都能答对吗?

整理几个被遗忘的js基础代码题,还都能答对吗?

作者头像
zz_jesse
发布2021-02-05 14:52:06
3940
发布2021-02-05 14:52:06
举报
文章被收录于专栏:前端技术江湖

我们每个人面试的时候,面试官都会问一些js基础的概念。比如说说你对闭包的理解,说说你对原型和原型链的理解,作用域和作用域链的理解,var、let、const的区别、promise的理解等等,相信这些概念性的东西,我们都能回答个八九不离十。

但如果面试官把这些概念性的问答,换成代码题让你来分析呢?是否还都能给出正确答案,并且说出为什么得出这个结果呢?

其实看代码,分析执行结果才是最考验人,是真是假一试便知啊。

作用域考察

下面代码输出什么?为什么?

如果这个题回答不准确,估计会被直接挂掉,毕竟太基础了。

第1题

代码语言:javascript
复制
var a=100 
function f1(){ console.log(a) } 
function f2(){ var a=200 f1() } 
f2()
代码语言:javascript
复制
var a=100 
function f1(){ console.log(a) } 
function f2(fn){ var a=200 fn() } 
f2(f1)

代码语言:javascript
复制
var a=100 

function f2(){ 
  var a=200 
  function f1(){ console.log(a) } 
  retunr f1
} 
var f = f2()
f()

闭包考察

第2题

代码语言:javascript
复制
let x = 1;
function A(y){
    let x = 2;
    function B(z){
        console.log(x+y+z); //会输出什么? 为什么?
    }
    return B;
}
let C = A(2);
C(3);

原型考察

第3题

代码语言:javascript
复制
var F = function () {}
Object.prototype.a = function () {}
Function.prototype.b = function () {}

var f = new F()

请问f有方法a 方法b吗 为什么?

值传递问题

第4题

代码语言:javascript
复制

var a=100
var b={a:200}

function f1(a1){
 a1= -100
}

function f2(b1){
 b1.a= -200
}


f1(a)
//a 

f2(b)
// b

请分析 f1 和 f2 函数执行后, a 和 b的值?为什么?


如果f2 改成下面的呢?f2 执行后 b 的值是什么? 为什么?

function f2(b1){
 b1 = {
  a:-200
 }
}

promise 考察

第5题

代码语言:javascript
复制
const promise = new Promise((resolve, reject) => {
    console.log(1);
    resolve();
    console.log(2);
    reject('error');
})
promise.then(() => {
    console.log(3);
}).catch(e => console.log(e))
console.log(4);

第6题

代码语言:javascript
复制
const promise = new Promise((resolve, reject) => {
        setTimeout(() => {
             console.log('once')
             resolve('success')
        }, 1000)
 })
promise.then((res) => {
       console.log(res)
     })
promise.then((res) => {
     console.log(res)
 })

第7题

代码语言:javascript
复制
Promise.resolve(1)
.then(2)
.then(Promise.resolve(3))
.then(console.log)

第8题

代码语言:javascript
复制
Promise.resolve(1).then((res)=>{
  throw new Error('dd')
},(error)=>{
console.log('error1',error)
}).catch(e=>{
console.log('error2',e)
})
代码语言:javascript
复制
Promise.resolve(1)
.then((res)=>{
  throw new Error('dd')
},(error)=>{
console.log('error1',error)
})
.then((res)=>{conso.log('ok')},
 (error)=>{console.log('error2',error)
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端技术江湖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作用域考察
  • 闭包考察
  • 原型考察
  • 值传递问题
  • promise 考察
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档