技术文章 | Technical articles

web前端学习:10个Javascript常见问题

相信各位前端朋友在最开始web前端学习的时候一定遇到过很多问题,而本文就整理了10个关于Javascript最常见问题,

并一一进行了详细的解答,它们大部分涵盖了Javascript基础知识,下面大家赶快来看看吧。

1、什么是Javascript中的闭包?

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

我认为最简单的解释方法是向您展示一个代码示例。

function outer() {

  var name = 'Maria';

  function inner() {

    console.log(name);

  }

  inner();

}

outer();

// 'Maria'

在上面的代码中,您可以看到该inner()函数可以访问其父函数变量name。因此,如果您调用该outer()函数,

则console.log()frominner()函数将返回name变量Maria。

但是,它可以访问外部函数参数对象,但是内部函数通常具有自己的参数对象,这使外部函数参数对象蒙上了阴影。

让我们看一下使用箭头函数创建闭合的示例。

function outer(a, b) {

  const inner = (a, b) => console.log(a, b);

  inner(1, 2);

}

outer('Alice', 'Mark');

// returns 1, 2

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

2、Javascript中的DOM是什么?

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

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

getElementById() -通过id属性选择元素,

getElementByName() -通过name属性选择元素,

getElementsByTagName() -选择选定标签的所有元素,

getElementsbyClassName() -选择具有特定条件的所有元素类名

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

Javascript还提供了其他操作元素的方法,不仅可以选择元素,例如appendChild()或innerHTML()。

除此之外,使用Javascript,我们可以处理事件和样式。

 3、什么是Javascript中的Promise?

承诺与异步编程一起使用,它用于启动操作,这需要时间来解析和返回值。

有了promise,可以在后台启动和完成操作,而无需停止应用程序的其他操作。

它改善了许多Web和移动应用程序的性能和用户体验。 

承诺可以处于三种状态:未决,使用值解决或被错误拒绝。 

如果承诺得到解决,我们可以调用then()方法并使用返回的值执行操作。万一承诺被拒绝,我们可以使用该catch()方法来处理错误。

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

4、什么是Javascript原型?

Javascript对象从原型继承方法和属性,并且Object.prototype在继承链的顶部。 

Javascriptprototype关键字也可用于向我们的构造函数添加新的值和方法。 

让我们看一下代码示例。

function Animal(name, kind, age) {

  this.name = name;

  this.kind = kind;

  this.age = age;

}

Animal.prototype.ownerName('Mark');

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

5、用Java语言悬挂什么?

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

在Javascript中,可以在使用变量后声明一个变量。

提升用于避免未定义的错误,因为否则可能会执行带有变量或函数的代码,但未定义。

请记住首先声明变量,以确保代码不会出现未定义值的问题。

这是一个示例,向您展示其工作方式。

// What you see

name = 'Ted';

console.log(name);

var name;

// returns 'Ted'


// What happens in a background

var name;

name = 'Ted';

console.log(name);

// returns 'Ted';

虽然将使用var创建变量定义,但将在每一行中将其初始化为undefined。 

let和const有点不同。直到真正发生初始化的那一行才对变量进行初始化。

因此,在此期间它不会调用任何未定义的。 

同样,重要的是要记住,在声明const时,必须同时对其进行初始化,因为无法对其进行更改。

6、Javascript中的对象是什么?

对象是Javascript中非常重要的元素,而JS中的几乎所有东西都是对象。 

当变量是值的容器时,对象可以具有许多值,并且可以分配给变量。

对象中的值写为name:value对。对象由属性和方法组成。

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

让我们看一下对象示例。

var student = {

  firstName: 'Alice',

  lastName: 'Jones',

  age: 21,

  sayHi: () => {

    return 'Hi, I am ' + this.firstName;

  }

}

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

7、Javascript中的函数是什么?

Javascript中的功能是一段代码,旨在执行任务。调用或调用该函数时,将执行该函数。 

函数用function关键字或常量定义。函数可以具有名称,也可以是匿名的。 

定义函数时,可以在函数名称后的括号中添加一些参数。 

当我们调用函数时,括号中传递的值称为参数。 

让我们看一下Javascript函数的代码示例。

function calculate(x, y) {

  return x * y;

}


calculate(2, 5);

8、什么是Javascript中的纯函数?

纯函数是函数式编程的主要概念,它是一个接受输入并返回值而无需修改范围内其他数据的函数。 

换句话说,在纯函数中,输出或返回值必须仅取决于输入值。

9、Javascript中的构造函数是什么?

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

我们将构造函数与new关键字一起使用,以使用新值创建类似的对象。

好的做法是使用大写形式调用构造方法。 

让我们看看构造函数的外观以及如何使用它。

function 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构造函数创建了一个新对象。

10、什么是Javascript类?

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

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

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

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


扫描下方二维码

即可免费领取【前端学习资料+免费试听】名额。

web前端学习资料


上一篇文章: 那些年老师说过的经典语录,你可曾记得?
下一篇文章: web前端开发要学什么?

最新发布 | 这里有最新的文章查看更多>>

爱创推荐 | 这里有推荐的文章查看更多>>