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。
未定义:当变量被声明并赋给无时,它的数据类型为“未定义”,或者当您尝试访问尚未声明的变量时。
非基本数据类型包括:
对象:对象是具有属性和类型的独立实体。
例如:
数组 :数组是用于存储不同元素的单个变量。
例如:
“==”和“===”运算符之间的区别“==”和“===”都用于比较变量的值,但是“==”不检查数据类型,而“===”检查数据类型。
例如:
解释JS中的隐式类型强制JS的隐式强制仅指JS试图将意外的值类型强制为预期类型。因此,可以在需要数字的位置传递字符串,在需要字符串等位置传递对象,然后尝试将其转换为正确的类型。
例如:
JS是静态类型语言还是动态类型语言?JS是动态类型的,这意味着解释器在运行时根据变量当时的值为变量分配一个类型。
JS中的NaN属性是什么?在JS中,NaN是“Not-a-Number”的缩写,是一个不是合法数字的数字。全局NaN属性与数字相同。
例如:
按值传递和按引用传递的解释“按值传递”意味着将变量的实际值传递到函数中。而“通过引用传递”意味着将变量本身传递到函数中(不仅仅是值)。
例如:
什么是JS中的立即调用函数?立即调用的函数表达式是一种在创建函数后立即执行函数的方法。
IIFE非常有用,因为它们不会污染全局对象,并且是隔离变量声明的简单方法。它们括在括号中,并以括号结尾。
例如:
解释JS中的高阶函数对其他函数进行操作的函数(通过将它们作为参数或返回它们)称为高阶函数。
高阶函数允许我们对动作进行抽象,而不仅仅是值。它们有几种形式。例如,我们可以有创建新函数的函数,也可以有可以更改其他函数的函数。
解释“this”关键字“this”关键字指的是正在执行当前代码的对象。它引用正在执行当前函数的对象。与其他语言相比,函数的“this”关键字在 JavaScript 中的行为略有不同。
在全局执行上下文中,“this”是指全局对象,无论是否处于严格模式。
在函数内部,其值取决于函数的调用方式。
如果代码未处于严格模式,并且调用未设置“this”的值,则这将默认为全局对象,即浏览器中的窗口。
解释call()、apply()和 bind()方法bind() 方法创建一个新函数,该函数在调用时,其this关键字的设置为提供的值。
call() 方法调用具有给定此值的函数和单独提供的参数。
这与前者的主要区别在于:
- 还接受其他参数
- 立即执行它被调用的函数。
- call() 方法不会复制正在调用它的函数。
apply() 方法与call()方法类似,但不同之处在于 call()接受用逗号分隔的参数,而 apply接受参数作为数组。
例如:
JS中的Currying是什么?Currying实际上是一个将函数链接在一起的过程,通过利用lambda演算来减少它们所采用的参数数量。这种技术为我们提供了一个选项来控制如何将参数传递给函数。
Currying是一种函数式编程技术,它将一个接受多个参数的函数转换为一系列嵌套函数,每个嵌套函数只接受一个参数。
解释JS中的范围和作用域作用域是在运行时访问代码的某些特定部分中的变量、函数和对象的方式。
它们主要有两种类型:
全局作用域 :
在函数外部定义的变量位于全局作用域中。此外,整个JavaScript文档中只有一个全局作用域。声明全局变量后,可以在代码中的任何位置使用该变量,即使在函数中也是如此。
局部作用域:
函数内定义的变量位于局部作用域中。它们对该函数的每次调用都有不同的作用域。此外,调用每个函数时都会创建一个新作用域。所以还有一个函数范围。
例如:
作用域链:作用域链用于解析JavaScript中变量名称的值。如果没有作用域链,如果不同作用域定义了多个变量名称,Javascript引擎将不知道要为某个变量名称选择哪个值。
什么是对象原型?Prototype属性基本上是一个对象(也称为原型对象),我们可以在其中附加原型对象中的方法和属性,这使所有其他对象能够继承这些方法和属性。
原型是JavaScript对象相互继承功能的机制。
例如:
什么是回调?作为参数传递给另一个函数的任何函数,以便可以在该函数中执行该函数,该函数称为回调函数。
什么是编程语言中的递归?函数直接或间接调用自身的过程称为递归,相应的函数称为递归函数。使用递归算法,可以很容易地解决某些问题。
构造函数在JS中的用途是什么?构造函数是一个特殊的函数,它创建和初始化一个类的对象实例。
在JS中,构造函数在使用 new 关键字创建对象时被调用。构造函数的目的是创建一个新对象并为任何现有对象属性设置值。构造函数的目的是创建一个对象并在存在任何对象属性时设置值。
这是一种创建对象的好方法,因为不需要显式声明要返回的内容,因为默认情况下,构造函数会返回在其中创建的对象
什么是DOM?JS DOM(文档对象模型)是一个界面,允许开发人员操作网站的内容,结构和样式。
DOM包含一堆节点,其中每个节点表示一个HTML元素。标记始终位于顶部,因此称为“根节点”。其余的节点位于它下面,因此被称为“子节点”。底部的节点称为“叶子”,通常填充元素的属性,值和事件。