10个开发者经常问的JavaScript面试题(附答案解析)

本篇文章为初学者介绍一下10 个最常被问到的 javascript 面试题。有一定的参考价值,有需要的朋友可以参考一下,希望对初学者有所帮助。

10个开发者经常问的JavaScript面试题(附答案解析)

在本文中,我收集了关于Javascript 最常被问到的 10 个问题及其答案。

这10 个问题大多涉及 Javascript 的基础知识,所以如果你刚刚开始学习 JS,最好理解并掌握它们并。

这个 10 问题涉及 JS 中闭包promise变量提升等等。尽管这些知识不是很难,但是知道答案是一件好事,因为其中一些经常在面试中会被问到。【推荐学习:javascript高级教程】

立即学习“Java免费学习笔记(深入)”;

Javascript 中的闭包是什么?

闭包是封闭在一起的函数的组合,其中内部函数可以访问其变量和外部函数的变量。

最简单的解释方法就是上例子:

function outer() {  var name = 'Maria';  function inner() {    console.log(name);  }  inner();}outer();// 'Maria'

登录后复制

在上面的代码中,你可以看到inner()函数可以访问其父函数变量name。 因此,如果调用outer()函数,那么inner()函数的console.log()将返回name的值Maria。

内部函数可以访问外部函数参数对象,但是内部函数参数与外部一样,则内部的参数对象会覆盖外部的参数对象。如下所示:

function outer(a, b) {  const inner = (a, b) => console.log(a, b);  inner(1, 2);}outer('Alice', 'Mark');// returns 1, 2

登录后复制

我们使用闭包的主要原因是返回可以返回其他函数的函数。

Javascript中的 DOM 是什么

DOM 是文档对象模型,它是网站的面向对象的表示形,可以使用 Javascript 进行修改。

使用 JS 可以操纵 DOM 元素,例如颜色,位置,大小。 为了选择页面的特定元素,Javascript 提供了一些方法:

getElementById() – 通过id属性选择一个元素getElementsByName() – 通过name属性选择一个元素getElementsByTagName() – 选择所选标签的所有元素,getElementsbyClassName() – 选择特定类名的所有元素

* querySelector() - 通过CSS选择器选择元素。

Javascript 还提供了其他操作元素的方法,而不仅仅是获取元素,比如appendChild()或innerHTML()。

Javascript 的 Promise  是什么

Promise 是异步编程的一种解决方案,可以替代传统的解决方案–回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise 有一下两个特点: (1)对象的状态不受外界影响。 (2)一旦状态改变了就不会在变,也就是说任何时候 Promise 都只有一种状态。

Promise 有三种状态,分别是:Pending (进行中), Resolved (已完成), Rejected (已失败)。Promise 从 Pending 状态开始,如果成功就转到成功态,并执行resolve回调函数;如果失败就转到失败状态并执行reject回调函数。

如果 Promise 被解析(resolved),我们可以调用then()方法并使用返回值执行操作。如果被拒绝(rejected),我们可以使用catch()方法来处理错误。

处理异步编程的其他方法还有async/await和callbacks。

Javascript 中的原型是什么?

原型通常指的是prototype和__proto__这两个原型对象,其中前者叫做显式原型对象,后者叫做隐式原型对象。

Javascript对象从原型继承方法和属性,而Object.prototype在继承链的顶部。Javascript prototype关键字还可以用于向构造函数添加新值和方法。

来看看事例:

function Animal(name, kind, age) {  this.name = name;  this.kind = kind;  this.age = age;}Animal.prototype.ownerName('Mark');

登录后复制

可以看到,通过使用原型,我们能够将ownerName属性添加到Animal()构造函数中。

Javascript 的 变量提升 是什么

提升是一种机制,它将所有声明的变量和函数提升到它们局部作用域的顶部,如果变量和函数被放置在全局作用域,则会被提升到全局作用域的顶部。

Javascript中,可以在变量被使用后在声明它。

提升用于避免在变量或函数有在没有定义之前就执行导致的 undefined 错误。

name = 'Ted';console.log(name);var name;// 'Ted'var name;name = 'Ted';console.log(name);// 'Ted';

登录后复制

使用 var 声明的变量,如果没有赋值,则默认会被初始化为 undefined, let 和 const 则不会。另外,需要注意的是,在声明const时,必须同时初始化它,因为后面不可在更改它。

Javascript中的对象是什么

对象只是一种特殊的数据。对象拥有属性和方法。JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等。

对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等;

对象的方法:能够在对象上执行的动作。例如,表单的“提交”(Submit),时间的“获取”(getYear)等;

属性只是简单的值,而方法是可以在对象上执行的操作。

var student = {  firstName: 'Alice',  lastName: 'Jones',  age: 21,  sayHi: () => {    return 'Hi, I am ' + this.firstName;  }}

登录后复制

在上面的代码中,你可以看到Student对象,其中包含三个属性和一个方法。

Javascript 中的函数是什么

在javascript中函数是一段可以被执行或调用任意次数的JavasScript代码,在数据类型中属于”function”。函数也拥有属性和方法,因此函数也是对象。

在Javascript中函数定义函数声明或函数表达式由关键字function开始。在定义函数时,可以在函数名后面的括号中添加一些参数。当我们调用函数时,括号中传递的值称为参数。

function calculate(x, y) {  return x * y;}calculate(2, 5);

登录后复制

Javascript中的纯函数是什么

如果函数的调用参数相同,则永远返回相同的结果。它不依赖于程序执行期间函数外部任何状态或数据的变化,必须只依赖于其输入参数。

顾名思义,纯函数跟我们初中数学的基本函数一样,遵循一定的映射关系,输入决定输出,一个输入只能对应一个输出。不同的输入可以有相同的输出,但是相同的输入不能有不同的输出

一个函数,如果符合以下两个特点,那么它就可以称之为 纯函数:

对于相同的输入,永远得到相同的输出没有任何可观察到的副作用

Javascript中的构造函数是什么

构造函数是一种特殊的方法,用于初始化和创建 Javascript 中的对象。

JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。

在构造函数内部,this 指向新创建的对象 Object。 这个新创建的对象的 prototype 被指向到构造函数的 prototype。

如果被调用的函数没有显式的 return 表达式,则隐式的会返回 this 对象,也就是新创建的对象。

const Person = (name, age) => {  this.name = name;  this.age = age;}var man = new Person('Mark', 23);console.log(man);// { name: 'Mark', age: 23 }

登录后复制

在上面的代码中,我创建了一个Person构造函数,在下面的代码中,创建了一个名为man的新变量,并基于Person构造函数创建了一个新对象。

Javascript类是什么?

自从 ES6 引入以来,我们可以在Javascript中使用类。 类是一种函数,我们使用关键字class代替function 关键字来初始化它。

除此之外,我们还必须在类内部添加constructor()方法,该方法在每次初始化类时都会调用。

在constructor()方法内部,我们添加了类的属性。 要基于现有的类创建另一个类,我们可以使用extends关键字。

在JavaScript中使用类的一个很好的例子是 React 框架,它是类的组件。

总结

在本文中,我收集了开发者经常问的 10 个Javascript问题,并给出答案,答案不是唯一,这里只是自己的一些见解,希望本文能给初学者带来一些帮助。

原文地址:https://dev.to/duomly/10-most-common-javascript-questions-answered-1083作者:Duomly

更多编程相关知识,请访问:编程视频!!

以上就是10个开发者经常问的JavaScript面试题(附答案解析)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2713973.html

(0)
上一篇 2025年3月7日 21:29:33
下一篇 2025年2月28日 10:27:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript中input怎么用

    javascript中input的用法:首先创建一个HTML示例文件;然后在body中创建一个form表单并通过input标签规定一个输入字段;最后在js代码中输入表单控件元素对象方法即可。 本文操作环境:windows7系统、javasc…

    2025年3月7日
    200
  • 为什么电脑没有javascript

    电脑没有javascript的原因及解决办法:1、javascript代码编写错误,检查并修改;2、浏览器把脚本应用关闭了,其解决办法就是在浏览器中开启javascript脚本即可。 本文操作环境:windows7系统、javascript…

    2025年3月7日
    200
  • 如何打开javascript

    打开javascript的方法:首先打开chrome浏览器;然后点击“设置”按钮,并找到“显示高级设置”;接着找到“内容设置”;最后选择“允许所有网站运行JavaScript”即可打开启用JavaScript。 本文操作环境:windows…

    2025年3月7日 编程技术
    200
  • javascript时间转换的方法

    javascript时间转换的方法:首先创建一个util.js文件;然后在里面重新封装一下Date的format方法;最后通过“new Date().Format()”方式调用实现时间转换即可。 本文操作环境:windows7系统、java…

    2025年3月7日
    200
  • javascript $是什么意思

    javascript $是指prototype定义的一类方法,比如“$(“id”)”得到的是页面id为“id”的元素,而“$F(“id”)”得到的是页面id为“id”的元素的值,这是只读不可写…

    2025年3月7日
    200
  • javascript怎么关闭浏览器

    javascript关闭浏览器的方法:1、通过“ function CloseWebPage(){…}”方法实现关闭浏览器网页;2、通过“open(location, ‘_self’).close();”…

    2025年3月7日
    100
  • javascript怎么实现页面关闭

    javascript实现页面关闭的方法:1、通过“window.close();”实现不带任何提示关闭窗口;2、通过“custom_close”关闭页面;3、通过“javascript:window.opener=null;”关闭当前页面。…

    2025年3月7日
    200
  • javascript cookie怎么删除

    javascript删除cookie的方法:首先通过“setCookie”设置cookie;然后通过“getCookie”获取cookie;最后通过“clearCookie”删除cookie即可。 本文操作环境:windows7系统、jav…

    2025年3月7日
    200
  • ie怎么设置javascript

    ie设置javascript的方法:首先打开IE,选择“工具-Internet选项(o)”菜单;然后选择“高级”选项卡;最后在“设置”中勾选“允许活动内容在我的计算机上的文件中运行*”即可。 本文操作环境:windows7系统、ie11&a…

    2025年3月7日 编程技术
    200
  • javascript怎么实现日期转换字符串

    javascript实现日期转换字符串的方法:首先通过“function formatNumber(n){…}”格式化日期;然后通过“function formatTime(number,format){..}”方法实现日期转换…

    2025年3月7日
    200

发表回复

登录后才能评论