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

简介: 我们每个人面试的时候,面试官都会问一些js基础的概念。比如说说你对闭包的理解,说说你对原型和原型链的理解,作用域和作用域链的理解,var、let、const的区别、promise的理解等等,相信这些概念性的东西,我们都能回答个八九不离十。但如果面试官把这些概念性的问答,换成代码题让你来分析呢?是否还都能给出正确答案,并且说出为什么得出这个结果呢?其实看代码,分析执行结果才是最考验人,是真是假一试便知啊。

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

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

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

作用域考察


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

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

第1题

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

闭包考察


第2题

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题

var F = function () {}
Object.prototype.a = function () {}
Function.prototype.b = function () {}
var f = new F()

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

值传递问题


第4题

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题

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题

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题

Promise.resolve(1)
.then(2)
.then(Promise.resolve(3))
.then(console.log)

第8题

Promise.resolve(1).then((res)=>{
  throw new Error('dd')
},(error)=>{
console.log('error1',error)
}).catch(e=>{
console.log('error2',e)
})
Promise.resolve(1)
.then((res)=>{
  throw new Error('dd')
},(error)=>{
console.log('error1',error)
})
.then((res)=>{conso.log('ok')},
 (error)=>{console.log('error2',error)
}
目录
相关文章
|
28天前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
120 58
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。
【10月更文挑战第7天】随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这两个工具,可以确保代码风格一致,提升团队协作效率和代码质量。
232 2
|
1月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
35 0
|
2月前
|
编解码 前端开发 JavaScript
javascript检测网页缩放演示代码
javascript检测网页缩放演示代码
|
2月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
15天前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
33 3
原生js炫酷随机抽奖中奖效果代码
|
20天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
185 4
|
22天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
73 6
|
18天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这些工具,可以确保代码风格一致,提高代码质量和可读性。
49 1