当前位置: 首页 > 科技观察

回答这10个最常见的Javascript问题

时间:2023-03-18 02:56:51 科技观察

为初学者介绍这10个最常见的JavaScript问题在这篇文章中,我收集了关于Javascript的10个最常见的问题及其答案。这10个问题中的大部分都涵盖了Javascript的基础知识,因此如果您刚刚开始使用JS,最好理解并掌握它们。这10个问题涵盖了JS中的闭包、promises、变量提升、类等。虽然这些知识不是很难,但是知道答案是件好事,因为其中一些经常会在面试中被问到。Javascript中的闭包是什么?闭包是封闭在一起的函数的组合,其中内部函数可以访问其变量和外部函数的变量。最简单的解释就是上面的例子:代码,可以看到inner()函数可以访问它的父函数变量名。因此,如果调用outer()函数,inner()函数的console.log()会返回nameMaria的值。内层函数可以访问外层函数参数对象,但是内层函数参数和外层函数参数是一样的,所以内层参数对象会覆盖外层参数对象。如下:functionouter(a,b){constinner=(a,b)=>console.log(a,b);inner(1,2);}outer('Alice','Mark');//返回1,2我们使用闭包的主要原因是返回可以返回其他函数的函数。什么是Javascript中的DOMDOM是文档对象模型,它是可以使用Javascript修改的网站的面向对象表示。使用JS可以操作DOM元素,例如颜色、位置、大小。为了选择页面的特定元素,Javascript提供了一些方法:getElementById()-通过id属性选择元素getElementsByName()-通过名称属性选择元素getElementsByTagName()-选择所选标签的所有元素,getElementsbyClassName()-选择所有具有特定类名的元素* querySelector() - 通过CSS选择器选择元素。Javascript 还提供了其他操作元素的方法,而不仅仅是获取它们,例如appendChild()或innerHTML()。什么是Javascript的PromisePromise是一个异步编程的解决方案,可以替代传统的解决方案——回调函数和事件。ES6统一了用法并原生提供了Promise对象。Promise作为一个对象,有以下两个特点:*(1)对象的状态不受外界影响。*(2)状态一旦改变就不会再改变,也就是说Promise在任何时候都只有一个状态。Promise有三种状态,分别是:**Pending**(进行中),**Resolved(完成),Rejected**(失败)。Promise从Pending状态开始。如果成功,则进入成功状态,执行resolve回调函数;如果失败,则进入失败状态,执行reject回调函数。如果Promise被解析,我们可以调用then()方法并使用返回值来执行操作。如果被拒绝(rejected),我们可以使用catch()方法来处理错误。处理异步编程的其他方法是async/await和回调。Javascript中的原型是什么?Prototype通常指的是两个原型对象,prototype和__proto__,前者称为显式原型对象,后者称为隐式原型对象。Javascript对象从原型继承方法和属性,Object.prototype位于继承链的顶端。Javascriptprototype关键字也可以用来给构造函数添加新的值和方法。让我们看一下示例:functionAnimal(name,kind,age){this.name=name;this.kind=kind;this.age=age;}Animal.prototype.ownerName('Mark');您可以看到,通过使用原型,我们能够将ownerName属性添加到Animal()构造函数中。什么是Javascript中的变量提升Hoisting是一种将所有声明的变量和函数提升到其局部作用域顶部的机制,如果将变量和函数放在全局作用域中,则将它们提升到全局作用域的顶部。在Javascript中,变量可以在使用后声明。提升用于避免在定义变量或函数之前执行变量或函数而导致的未定义错误。name='Ted';console.log(name);varname;//'Ted'varname;name='Ted';console.log(name);//'Ted';使用var声明的变量,如果没有赋值,默认会初始化为undefined,let和const不会。另外需要注意的是,在声明const的时候,一定要同时初始化,因为后面是不能改变的。Javascript中的对象是什么对象只是一种特殊的数据。对象具有属性和方法。JavaScript中的一切都是对象,例如:字符串、数字、数组、函数等。对象的属性:反映了对象的一些具体属性,例如:字符串的长度,图片的长宽,ETC。;对象的方法:可以对对象执行的操作。例如,“提交”获取表单,“getYear”获取时间等;属性只是简单的值,而方法是可以对对象执行的操作。varstudent={firstName:'Alice',lastName:'Jones',age:21,sayHi:()=>{return'Hi,Iam'+this.firstName;}}在上面的代码中,你可以看到Student对象包含三个属性和一个方法。Javascript中的函数是什么?在JavaScript中,函数是一段可以被执行或调用任意次数的JavasScript代码,属于数据类型中的“函数”。函数也有属性和方法,所以函数也是对象。Javascript中的函数定义函数声明或函数表达式以关键字function开头。定义函数时,可以在函数名后的括号中加入一些参数。当我们调用函数时,括号中传递的值称为参数。functioncalculate(x,y){returnx*y;}calculate(2,5);什么是Javascript中的纯函数如果用相同的参数调用函数,它总是返回相同的结果。它不依赖于程序执行期间函数外部的任何状态或数据变化,而必须只依赖于它的输入参数。顾名思义,纯函数和我们初中数学的基本函数是一样的。它们遵循一定的映射关系。输入决定输出,一个输入只能对应一个输出。不同的输入可以有相同的输出,但相同的输入不能有不同的输出一个函数如果满足以下两个特征就可以称为纯函数:对于相同的输入,它总是会得到相同的输出而没有任何可观察的副作用Javascript中的构造函数构造函数是用于在Javascript类中初始化和创建对象的特殊方法。JavaScript中的构造函数不同于其他语言中的构造函数。使用new关键字调用的函数被视为构造函数。在构造函数内部,this指向新创建的对象Object。这个新创建的对象的原型指向构造函数的原型。如果被调用函数没有显式返回表达式,则隐式返回this对象,即新创建的对象。constPerson=(name,age)=>{this.name=name;this.age=age;}varman=newPerson('Mark',23);console.log(man);//{name:'Mark',age:23}在上面的代码中,我创建了一个Person构造函数,在下面的代码中,我创建了一个名为man的新变量,并基于Person构造函数创建了一个新对象。什么是Javascript类?自从引入ES6之后,我们就可以在Javascript中使用类了。类是一种函数,我们使用关键字class而不是function关键字来初始化它。除此之外,我们必须在每次初始化类时调用的类中添加constructor()方法。在constructor()方法中,我们添加类的属性。要基于现有类创建另一个类,我们可以使用extends关键字。在JavaScript中使用类的一个很好的例子是React框架,它是类的一个组件。总结在这篇文章中,我收集了开发者经常问到的10个Javascript问题并给出了答案。答案不是唯一的。这里只是我自己的一些见解。希望这篇文章能给初始化器带来一些帮助。作者:Duomly译者:前端小智来源:dev原文:https://dev.to/duomly/10-most-common-javascript-questions-answered-1083可以通过以下二维码关注。转载本文请联系大千世界公众号。