余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

400个最常见的 JavaScript 面试问答(3)(最常问的30道javascript面试题附答案)

xiyangw 2022-11-26 16:00 19 浏览 0 评论

大家好,我是海拥,专注于前端知识的分享。今天将给大家带来的是 400 个最常见的 JavaScript 面试问答第三部分。接下来我会持续更新(争取日更,也可能每周3-5篇),每小节大概 10 道题左右,总共会有 400 多道。

大家一定要记得点赞收藏呀!!!

400个最常见的 JavaScript 面试问答(3)(最常问的30道javascript面试题附答案)

21.什么是暂时性死区?

暂时性死区是 JavaScript 中的一种行为,在使用 let 和 const 关键字声明变量时发生,但不使用 var 声明变量。在 ECMAScript 6 中,在其声明之前(在其范围内)访问letorconst变量会导致 ReferenceError。发生这种情况的时间跨度,即变量绑定的创建和声明之间,称为时间死区。

让我们用一个例子来看看这个行为,

function somemethod() {
  console.log(counter1); // undefined
  console.log(counter2); // ReferenceError
  var counter1 = 1;
  let counter2 = 2;
}

22.什么是IIFE(立即执行函数表达式)?

IIFE(立即调用函数表达式)是一个 JavaScript 函数,它在定义后立即运行。它的签名如下,

(function ()
    {
      // 在这里写逻辑
    }
 )
();

使用 IIFE 的主要原因是为了获得数据隐私,因为在 IIFE 中声明的任何变量都不能被外界访问。即,如果您尝试使用 IIFE 访问变量,则会引发如下错误,

(function ()
        {
          var message = "IIFE";
          console.log(message);
        }
 )
();
console.log(message); //Error: message is not defined(消息未定义)

23.使用模块有什么好处?

使用模块有利于扩展有很多好处。其中一些好处是,

  • 可维护性
  • 可重用性
  • 命名空间

24.什么是memoization(记忆)?

Memoization 是一种编程技术,它试图通过缓存先前计算的结果来提高函数的性能。每次调用 memoized 函数时,都会使用其参数来索引缓存。如果数据存在,则可以返回它,而无需执行整个函数。否则执行该函数,然后将结果添加到缓存中。

让我们举一个添加记忆化功能的例子,

const memoizAddition = () => {
  let cache = {};
 return (value) => {
  if (value in cache) {
   console.log('Fetching from cache');
   return cache[value]; // 在这里, cache.value 不能用作以数字开头的属性名称,该数字不是有效的 JavaScript 标识符。 因此,只能使用方括号表示法访问。
  }
  else {
   console.log('Calculating result');
   let result = value + 20;
   cache[value] = result;
   return result;
  }
 }
}
// memoizAddition 返回的函数
const addition = memoizAddition();
console.log(addition(20)); //输出: 40 calculated
console.log(addition(20)); //输出: 40 cached

25.什么是Hoisting(变量提升)?

Hoisting是一种 JavaScript 机制,其中变量和函数声明在代码执行之前被移动到其作用域的顶部。请记住,JavaScript 只提升声明,而不是初始化。
我们举一个简单的变量提升的例子,

console.log(message); //输出: undefined
var message = 'The variable Has been hoisted';

上面的代码看起来像下面的解释器,

var message;
console.log(message);
message = 'The variable Has been hoisted';

26.ES6 中的类是什么?

在 ES6 中,Javascript 类主要是对 JavaScript 现有的基于原型的继承的语法糖。

例如,在函数表达式中编写的基于原型的继承如下,

function Bike(model,color) {
    this.model = model;
    this.color = color;
}

Bike.prototype.getDetails = function() {
    return this.model + ' bike has' + this.color + ' color';
};

而 ES6 类可以定义为替代

class Bike{
  constructor(color, model) {
    this.color= color;
    this.model= model;
  }

  getDetails() {
    return this.model + ' bike has' + this.color + ' color';
  }
}

27.什么是closures(闭包)?

闭包是函数和声明该函数的词法环境的组合。即,它是一个内部函数,可以访问外部或封闭函数的变量。闭包有三个作用域链

  • 自己的范围,其中在其大括号之间定义变量
  • 外部函数的变量
  • 全局变量

让我们举一个闭包概念的例子,

function Welcome(name){
  var greetingInfo = function(message){
   console.log(message+' '+name);
  }
return greetingInfo;
}
var myFunction = Welcome('Haiyong');
myFunction('Welcome '); //输出: Welcome Haiyong
myFunction('Hello Mr.'); //输出: Hello Mr.Haiyong

根据上面的代码,即使在外部函数返回之后,内部函数(即,greetingInfo)也可以访问外部函数作用域(即 Welcome)中的变量。


28.什么是modules(模块)?

模块是指独立、可重用代码的小单元,也是许多 JavaScript 设计模式的基础。大多数 JavaScript 模块导出对象字面量、函数或构造函数


29.为什么需要模块?

以下是在 javascript 生态系统中使用模块的好处

  • 可维护性
  • 可重用性
  • 命名空间

30.javascript中的作用域是什么?

作用域是在运行时代码的某些特定部分中变量、函数和对象的可访问性。换句话说,范围决定了代码区域中变量和其他资源的可见性。

希望大家能够给海海 点赞+收藏+关注 ,你的支持是海海更新的动力!后面我会持续分享面试经验 & 前端相关的专业知识。

最后祝大家都能找到满意的实习和 offer!

相关推荐

快来领取,33个常用JavaScript功能已封装成方法,拿来即用
快来领取,33个常用JavaScript功能已封装成方法,拿来即用

在实际开发中,为了提高开发的效率,我们会把常用到的功能封装成方法,这样后期开发需要,拿来即用。这里分享33个在实际开发中经常需要用到的功能(已封装成方法),分享...

2023-03-21 19:12 xiyangw

JavaScript 常用功能总结(javascript日常用途有哪些)
JavaScript 常用功能总结(javascript日常用途有哪些)

编吐血整理加上翻译,太辛苦了~求赞!本文主要总结了JavaScript常用功能总结,如一些常用的额JS对象,基本数据结构,功能函数等,还有一些常用的设计模式...

2023-03-21 19:12 xiyangw

JavaScript 无处不在(javascript undefine)
JavaScript 无处不在(javascript undefine)

你知道那个梗吗?就是有人试图在任何带有屏幕和某种输入界面的电子设备上运行Doom游戏那个?结果今天我们开始在JavaScript这边也看到这种现象了。由...

2023-03-21 19:11 xiyangw

你可以用JavaScript做什么?(javascript能干啥)
你可以用JavaScript做什么?(javascript能干啥)

正如我们所提到的,JavaScript是一种用途极其广泛的语言,可以用来实现许多不同的目标。为了让你充分了解这种脚本语言的多样性,我们在下面列出了几个示例。请...

2023-03-21 19:11 xiyangw

JS小知识,分享20个有用 JavaScript 小技巧上篇(六)

您可能已经知道JavaScript是世界上使用最广泛的编程语言。它用于Web、移动混合应用程序、服务器端(NodeJS)和各种其他应用程序。由于它可用于在Web浏览器中显示以及使用no...

Javascript 在 2023 年的优势(javascript优势)
Javascript 在 2023 年的优势(javascript优势)

Javascript是一种编程语言,近年来已成为最流行和使用最广泛的语言之一。它是一种通用语言,可用于各种应用程序,包括Web开发、移动应用程序开发,甚至...

2023-03-21 19:11 xiyangw

什么是JavaScript?为什么使用JavaScript?(javascript是由什么语言编写的)
什么是JavaScript?为什么使用JavaScript?(javascript是由什么语言编写的)

JavaScript是一种客户端脚本语言,还可以使用Node.js将其用作服务器端语言。我们称之为脚本语言,因为它在执行之前不需要编译。在运行时,每个命令或行...

2023-03-21 19:10 xiyangw

这就是 JavaScript 的用途(这就是我们东方人的魅力)
这就是 JavaScript 的用途(这就是我们东方人的魅力)

有许多不同的地方可以使用JavaScript,但最常见的地方是在网页中。事实上,对于大多数使用JavaScript的人来说,在网页中是他们唯一使用它的地...

2023-03-21 19:10 xiyangw

Web前端:JavaScript的6大有趣用途(web前端面试题及答案)
Web前端:JavaScript的6大有趣用途(web前端面试题及答案)

  JavaScript是一种基于文本的跨平台、解释型和面向对象的语言。JavaScript用于客户端和用户端开发,也以开发网页而闻名。它用于吸引用户,因为它允...

2023-03-21 19:10 xiyangw

自学WEB前端多久可以找到一份工作?(自学web前端开发多久)
自学WEB前端多久可以找到一份工作?(自学web前端开发多久)

零基础,非计算机专业,自学转行成功,目前工作6年。第一步,先学HTML+CSS,网上视频教程一大堆。照着视频做布局,在没有熟练布局之前,别去做别的。熟练布局的标...

2023-03-21 19:09 xiyangw

如何成为前端开发人员(完整的实用指南)(如何成为一个合格的前端程序员)

本篇文章较长,预计阅读时间17分钟前端开发人员,也称为前端工程师,是指通过HTML,CSS和Javascript将设计转换为工作网站页面的人员,以便用户可以通过浏览器访问该网站页面并与之交互。十年前,...

web前端开发培训课程怎么样(web前端开发培训课程怎么样啊)
web前端开发培训课程怎么样(web前端开发培训课程怎么样啊)

零基础小伙伴想要通过前端培训的方式来学习开发技术知识,首先是要找到适合自己且靠谱的培训机构,因为判定培训机构靠谱与否,培训课程内容是否符合企业的发展需求是判断的...

2023-03-21 19:09 xiyangw

自学web前端开发,你用多久找到了工作?(web前端自学视频教程)
自学web前端开发,你用多久找到了工作?(web前端自学视频教程)

web前端是零基础的首选技术对于很多人而言,相比较Java程序员,c++程序员,PHP程序员,Python程序员而言,web前端开发是较为容易入门的,不用和复...

2023-03-21 19:09 xiyangw

小白自学前端能找到工作吗?(自学前端怕找不到工作,怎么办?)
小白自学前端能找到工作吗?(自学前端怕找不到工作,怎么办?)

随着互联网的蓬勃发展,导致前端开发的人才缺口变大,web前端开发入行门槛低、前景好,因此有很多大学生转行入前端开发行业,初级web前端岗位起步月薪在6K-左右,...

2023-03-21 19:08 xiyangw

27岁的他用4个月成为前端工程师...(29岁转前端开发)
27岁的他用4个月成为前端工程师...(29岁转前端开发)

▌通信狗初识前端H5我叫阿强,大学学的通信工程专业,大四到某国际公司旗下通信子公司实习,毕业后就留下了,在郑州。跟我合租的哥们是公司新同事,他负责营销团队的新媒...

2023-03-21 19:08 xiyangw

取消回复欢迎 发表评论: