快捷搜索:  汽车  科技

javascript面试题100道:常见的JavaScript面试问题

javascript面试题100道:常见的JavaScript面试问题Null :当变量赋给零或空字符串时,其数据类型为 null。布尔值:布尔值有两个值。真与假。当我们创建一个布尔值时,我们只是说它是真的还是假的。js中有两种主要的数据类型,它们是基本数据和非基本数据类型。基本数据类型包括:字符串:字符串是字母数字字符的集合。我通过键入双引号,单引号或反引号字符来启动字符串。双引号和单引号的行为相同,反引号字符具有一些额外的功能。

链接:https://dev.to/charlesceejay5/common-javascript-interview-questions-248d

作者:Charles Cee Jay

如有翻译不准,请多指正。

今天,我们将讨论并回答作为JavaScript开发人员会遇到的常见JavaScript面试问题。这些包括不同的精心安排和回答的问题,让你为自信地参加下一次面试做好准备。

JS中存在哪些不同的数据类型?

js中有两种主要的数据类型,它们是基本数据和非基本数据类型。

基本数据类型包括:

字符串:字符串是字母数字字符的集合。我通过键入双引号,单引号或反引号字符来启动字符串。双引号和单引号的行为相同,反引号字符具有一些额外的功能。

布尔值:布尔值有两个值。真与假。当我们创建一个布尔值时,我们只是说它是真的还是假的。

Null :当变量赋给零或空字符串时,其数据类型为 null。

未定义:当变量被声明并赋给无时,它的数据类型为“未定义”,或者当您尝试访问尚未声明的变量时。

非基本数据类型包括:

对象:对象是具有属性和类型的独立实体。

例如:

javascript面试题100道:常见的JavaScript面试问题(1)

数组 :数组是用于存储不同元素的单个变量。

例如:

javascript面试题100道:常见的JavaScript面试问题(2)

“==”和“===”运算符之间的区别

“==”和“===”都用于比较变量的值,但是“==”不检查数据类型,而“===”检查数据类型。

例如:

javascript面试题100道:常见的JavaScript面试问题(3)

解释JS中的隐式类型强制

JS的隐式强制仅指JS试图将意外的值类型强制为预期类型。因此,可以在需要数字的位置传递字符串,在需要字符串等位置传递对象,然后尝试将其转换为正确的类型。

例如:

javascript面试题100道:常见的JavaScript面试问题(4)

JS是静态类型语言还是动态类型语言?

JS是动态类型的,这意味着解释器在运行时根据变量当时的值为变量分配一个类型。

JS中的NaN属性是什么?

在JS中,NaN是“Not-a-Number”的缩写,是一个不是合法数字的数字。全局NaN属性与数字相同。

例如:

javascript面试题100道:常见的JavaScript面试问题(5)

按值传递和按引用传递的解释

“按值传递”意味着将变量的实际值传递到函数中。而“通过引用传递”意味着将变量本身传递到函数中(不仅仅是值)。

例如:

javascript面试题100道:常见的JavaScript面试问题(6)

什么是JS中的立即调用函数?

立即调用的函数表达式是一种在创建函数后立即执行函数的方法。

IIFE非常有用,因为它们不会污染全局对象,并且是隔离变量声明的简单方法。它们括在括号中,并以括号结尾。

例如:

javascript面试题100道:常见的JavaScript面试问题(7)

解释JS中的高阶函数

对其他函数进行操作的函数(通过将它们作为参数或返回它们)称为高阶函数。

高阶函数允许我们对动作进行抽象,而不仅仅是值。它们有几种形式。例如,我们可以有创建新函数的函数,也可以有可以更改其他函数的函数。

解释“this”关键字

“this”关键字指的是正在执行当前代码的对象。它引用正在执行当前函数的对象。与其他语言相比,函数的“this”关键字在 JavaScript 中的行为略有不同。

在全局执行上下文中,“this”是指全局对象,无论是否处于严格模式。

在函数内部,其值取决于函数的调用方式。

如果代码未处于严格模式,并且调用未设置“this”的值,则这将默认为全局对象,即浏览器中的窗口。

javascript面试题100道:常见的JavaScript面试问题(8)

解释call()、apply()和 bind()方法

bind() 方法创建一个新函数,该函数在调用时,其this关键字的设置为提供的值。

call() 方法调用具有给定此值的函数和单独提供的参数。
这与前者的主要区别在于:

  • 还接受其他参数
  • 立即执行它被调用的函数。
  • call() 方法不会复制正在调用它的函数。

apply() 方法与call()方法类似,但不同之处在于 call()接受用逗号分隔的参数,而 apply接受参数作为数组。

例如:

javascript面试题100道:常见的JavaScript面试问题(9)

JS中的Currying是什么?

Currying实际上是一个将函数链接在一起的过程,通过利用lambda演算来减少它们所采用的参数数量。这种技术为我们提供了一个选项来控制如何将参数传递给函数。

Currying是一种函数式编程技术,它将一个接受多个参数的函数转换为一系列嵌套函数,每个嵌套函数只接受一个参数。

javascript面试题100道:常见的JavaScript面试问题(10)

解释JS中的范围和作用域

作用域是在运行时访问代码的某些特定部分中的变量、函数和对象的方式。

它们主要有两种类型:

全局作用域

在函数外部定义的变量位于全局作用域中。此外,整个JavaScript文档中只有一个全局作用域。声明全局变量后,可以在代码中的任何位置使用该变量,即使在函数中也是如此。

局部作用域:

函数内定义的变量位于局部作用域中。它们对该函数的每次调用都有不同的作用域。此外,调用每个函数时都会创建一个新作用域。所以还有一个函数范围。

例如:

javascript面试题100道:常见的JavaScript面试问题(11)

作用域链:作用域链用于解析JavaScript中变量名称的值。如果没有作用域链,如果不同作用域定义了多个变量名称,Javascript引擎将不知道要为某个变量名称选择哪个值。

什么是对象原型?

Prototype属性基本上是一个对象(也称为原型对象),我们可以在其中附加原型对象中的方法和属性,这使所有其他对象能够继承这些方法和属性。

原型是JavaScript对象相互继承功能的机制。

例如:

javascript面试题100道:常见的JavaScript面试问题(12)

什么是回调?

作为参数传递给另一个函数的任何函数,以便可以在该函数中执行该函数,该函数称为回调函数。

什么是编程语言中的递归?

函数直接或间接调用自身的过程称为递归,相应的函数称为递归函数。使用递归算法,可以很容易地解决某些问题。

构造函数在JS中的用途是什么?

构造函数是一个特殊的函数,它创建和初始化一个类的对象实例。

在JS中,构造函数在使用 new 关键字创建对象时被调用。构造函数的目的是创建一个新对象并为任何现有对象属性设置值。构造函数的目的是创建一个对象并在存在任何对象属性时设置值。

这是一种创建对象的好方法,因为不需要显式声明要返回的内容,因为默认情况下,构造函数会返回在其中创建的对象

javascript面试题100道:常见的JavaScript面试问题(13)

什么是DOM?

JS DOM(文档对象模型)是一个界面,允许开发人员操作网站的内容,结构和样式。

DOM包含一堆节点,其中每个节点表示一个HTML元素。标记始终位于顶部,因此称为“根节点”。其余的节点位于它下面,因此被称为“子节点”。底部的节点称为“叶子”,通常填充元素的属性,值和事件。

javascript面试题100道:常见的JavaScript面试问题(14)

猜您喜欢: