2022年js基础面试题---持续更新

article/2025/5/15 20:16:51

目录

1.javascipt的数据类型

1.1基本类型

1.2引用类型

1.3存储方式的区别

1.4 undefined和null的区别

1.5JavaScript什么情况下会返回undefined值?

2.javaScript数据类型检测的方法

 2.1 typeof 

 2.2 instanceof 

3.创建函数的几种方式

3.1 函数声明式

3.2函数表达式

3.3函数对象方式

4.Javascript创建对象的几种方式

4.1 字面量方式

4.2使用构造函数⭐⭐

new关键字的作用:

4.3工厂模式

4.4使用原型对象的方式prototype关键字

4.5混合模式(原型和构造函数)

5.JavaScript宿主对象和原生对象的区别。

原生对象:

宿主对象

6.=== 和==的区别

===  三个等号称为同等符。

==:两个等号称为等值符

7.如何区分数组和对象?

8.怎样判断两个对象相等


1.javascipt的数据类型

1.1基本类型

Number、String、Boolean、Undefined、null、symbol

1.2引用类型

  • Object
  • Array
  • Function

1.3存储方式的区别

  • 基本数据类型--存储在堆内存中
  • 引用数据类型--存储在栈内存中

1.4 undefined和null的区别

undefined:表示不存在这个值。一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但还 没 有定义。当尝试读取时会返回 undefined

例如变量被声明了,但没有赋值时,就等于 undefine

null: 表示一个对象被定义了,值为’空值‘

null == undefined // true
null === undefined // false

1.5JavaScript什么情况下会返回undefined值?

  1. 访问声明,但是没有初始化的变量
  2. 访问不存在的属性
  3. 访问函数的参数没有被显示的传递值
  4. 访问任何被设置为undefined值的变量
  5. 没有定义return的函数隐式返回
  6. 函数return没有显示的返回任何内容

2.javaScript数据类型检测的方法

 2.1 typeof 

判断简单数据类型

 2.2 instanceof 

判断复杂数据类型

3.创建函数的几种方式

3.1 函数声明式

function sum(num1,num2){return num1+num2;
}

3.2函数表达式

var sum=function(num1,num2){return num1+num2;}

3.3函数对象方式

var sum=new function('num1','num2','return num2+num1')

4.Javascript创建对象的几种方式

4.1 字面量方式

const Cat={}
Cat.name='ruiky'  //给对象添加属性并且赋值
Cat.say=function(){console.log('haha');}  //给对象添加方法Cat.say()  //调用对象的方法

4.2使用构造函数⭐⭐

//构造函数模式function Person(name, age, sex) {this.name = namethis.age = agethis.sex = sex}let Person1 = new Person('小蘑', 18, '男')console.log(Person1);

 构造函数在js(ES5)中相当于其它面向对象编程语言中的类,对象称为类的实例,类称为对象公共特性的抽象。构造函数创建对象的过程又称为实例化

new关键字的作用:

1.创建空对象并让this指向该空对象

2.执行构造函数,给空对象增加属性

3.返回已增加了属性的对象

4.3工厂模式

function star(name, age, song) {var o = {};o.uname = name;o.age = age;o.sing = function () {console.log(song);};return o;
}var zjl = star('周杰伦', 40, '七里香');

4.4使用原型对象的方式prototype关键字

 //原型对象function Dog() {}Dog.prototype.name = "小黑";Dog.prototype.eat = function() {console.log(this.name + "喜欢吃骨头");}const ruiky = new Dog()ruiky.eat()

4.5混合模式(原型和构造函数)

此处省略。。。

5.JavaScript宿主对象和原生对象的区别。

原生对象:

“独立于宿主环境的 ECMAScript 实现 提供的对象” 包含:Object、Function、Array、String、Boolean、Number、 Date 、 RegExp 、 Error 、 EvalError、RangeError、ReferenceError、SyntaxError、TypeError、 URIErro

宿主对象

BOM 和 DOM 都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白 了就是,ECMAScript 官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通 过 ECMAScript 程序创建的对象

6.=== 和==的区别

===  三个等号称为同等符。

  • 当等号两边的值类型相同的时候,直接比较等号两边的值。值相同则返回true。
  • 若等号两边的值类型不同时直接返回false。
  • 就是说三个等号,既要判断值也要判断类型是否相等。

==:两个等号称为等值符

  • 当等号两边的值为相同类型时,比较值是否相同,
  • 类型不同时 会发生类型的自动转换转换为相同类型后再作比较。
  • 总的来说就是两个等号 只要值相等 就可以

7.如何区分数组和对象?

1.通过ES6中的Array.isArray 来识别

Array.isArray([]) //true 
Array.isArray({}) //false

2.通过instanceof 识别

[] instanceof Array //true
{} instanceof Array //false

3.通过调用constructor来识别

{}.constructor //返回 object
[].constructor //返回 Array

4.通过 Object.prototype.toString.call 

Object.prototype.toString.call([]) //["object Array"]
Object.prototype.toString.call({}) //["object Object"]

8.怎样判断两个对象相等

ES6中 Object.is() 方法来比较两个对象引用的内存地址是否一致来判断这两个对象是否相等。

9.怎样比较两个对象内容是否一致

参考步骤如下:

1.判断两个对象是否指向同一内存

2.使用Object.getOwnPropertyNames获取对象所有键名数组

3.判断两个对象的键名数组是否相等

4.遍历键名,判断键值是否都相等

10.什么是js的垃圾回收机制

JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。

11.怎样理解作用域何作用域链

作用域

  • 变量与函数的可访问范围。 由当前环境与上层环境的一系列变量对象组成。

  • 作用:作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

作用域链:

  • 变量到 创建该变量的函数的作用域中取值。但是如果在当前作用域中没取到。就会向上级作用域中去查,直到全局作用域。

  • 这样一个查找过程形成的链条就叫做作用域链。

12.js中this的五种情况

  1. 普通函数调用,this指向window

  2. 函数作为对象的方法被调用时,this指向该对象。

  3. 构造器调用,this指向返回的这个对象

  4. 箭头函数的this绑定this所在函数定义在哪个对象下就绑定到最近一层对象上

13.什么是原型、原型链

原型

构造函数`的prototype和其`实例`的__proto__是指向同一个地方的,这个地方就叫做`原型对象

//对象都会有一个属性 __proto__ 指向构造函数的 prototype 原型对象
 console.log(Obj.__proto__ === Obj.constructor.prototype); //true

首先要知道一个原型关系:

  • 每一个class都有一个显示原型prototype

  • 每个实例都有一个隐式原型_ _proto

  • 实例的_proto _指向对应class的prototype

原型链

比如当我们访问某个对象上的login()方法,如果没有它就会去当前的原型对象上(prototype)上去查找,如果没有继续向上一层的原型对象上 去找,直到Object的原型对象,没有找到就报错,这样一个向上的过程就是原型链

 

14.事件循环 Event Loop

js是单线程的,一个任务执行完成之后才能执行另一个任务。

首先要知道运行栈任务队列事件循环

同步任务放到 运行栈中

异步任务放到 异步队列里

事件循环就是检测 任务队列中是否有异步任务。有就执行,没有就继续循环。

15.Async/Await 如何通过同步的方式实现异步

Async/Await就是一个自执行的generate函数。利用generate函数的特性把异步的代码写成“同步”的形式,第一个请求的返回值作为后面一个请求的参数,其中每一个参数都是一个promise对象.

16.防抖、节流

防抖:用户触发事件过于频繁,只需要最后一次事件的操作

节流 :规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。


http://chatgpt.dhexx.cn/article/ZmRcFx7S.shtml

相关文章

JS 基础面试题

JS 基础面试题 1、什么是JavaScript? 基于对象和事件驱动可解释性脚本语言 2、JavaScript与ECMAScript的关系? JavaScript是ECMAScript的表现,ECMAScript是JavaScript的规范 3、变量的命名规则? 1.名字见名知义,…

js基础面试题

一、JavaScript的基本数据类型 1、 基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 2、 引用数据类型:对象(Object)、数组(Arr…

【c++】atan2()和atan()函数

atan2(): (1)定义: double atan2(double y,double x); atan2() 函数的功能是求 y/x 的反正切值。atan2() 是 atan() 的增强版,能够确定角度所在的象限。 反正切函数 atan2() 和正切函数 tan() 的功能恰好…

asin、acos、atan 和 atan2 函数用法简介

函数名: asin 函数原型: double asin(double x); (x > -1 && x < 1) 功 能: 返回 x 的弧度制反正弦值 函数名: acos 函数原型: double acos(double x); (x > -1 && x < 1) 功 能: 返回的是一个数值的反余弦弧度值&#xff0c;其范围是 0…

atan2与atan的区别

目录 总结 atan2: Four-quadrant inverse tangent. atan 距离对比 总结 简而言之&#xff0c;atan2与atan的区别体现在两个方面&#xff1a; (1) atan2接收两个输入参数&#xff1b;atan只接收一个输入参数 (2) atan2对象限敏感&#xff0c;根据两个参数判断它是属于哪个象…

【Unity3D日常开发】Mathf.Atan2函数研究

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群&#xff1a;1040082875 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 最近有用到这个函数&#xff0c;就…

【计算几何】atan2函数

atan2函数 幅角 复数的模与辐角是复数三角形式表示的两个基本元素&#xff0c;复数所对应的向量长度称为复数的幅值&#xff0c;该向量与实轴正方向的夹角为复数的辐角。辐角的大小有无穷多&#xff0c;但是辐角主值唯一确定。利用复数的模和辐角&#xff0c;可以将复数表示成…

matlab atan2函数解析

旁边的图片显示内容是:在一个单位圆内atan2函数在各点的取值。圆内标注代表各点的取值的幅度表示。 图片中,从最左端开始,角度的大小随着逆时针方向逐渐从-π增大到+π,并且角度大小在点位于最右端时,取值为0。 另外要注意的是,函数atan2(y,x)中参数的顺序是倒置的,atan…

torch.atan2函数详细解答

先看看arctan arctan实际上是用来计算点(x&#xff0c;y)组成的向量&#xff0c;与x轴的弧度的&#xff0c;是tan的反函数&#xff0c;推导如下&#xff0c;α为弧度 ​ ​ yarctan(x)其图像如下 y为弧度&#xff0c;x为任意值&#xff0c;这里不是指上面的坐标x&#xff0c…

atan2相关知识汇总

1.atan2的含义 C 语言里 double atan2(double y,double x) 返回的是原点至点(x,y)的方位角&#xff0c;即与 x 轴的夹角。返回值的单位为弧度&#xff0c;取值范围为&#xff08;-π, π]。结果为正表示从 X 轴逆时针旋转的角度&#xff0c;结果为负表示从 X 轴顺时针旋转的角…

HPC超算初识思维导图

HPC是高性能计算(High Performance Computing)机群的简称。指能够执行一般个人电脑无法处理的大资料量与高速运算的电脑&#xff0c;其基本组成组件与个人电脑的概念无太大差异&#xff0c;但规格与性能则强大许多。现有的超级计算机运算速度大都可以达到每秒一兆&#xff08;万…

超级计算机中心建设方案,超算中心建设框架

数据中心硬件建设框架 1.主要内容 华浩超算数据中心主要由基础硬件设施、超算影像处理系统及业务协同管理应用平台和安全保密体系组成。每个部分相互联系、相互依赖。目前具体建设内容如下&#xff1a; 内容一&#xff1a;基础硬件设施建设 1&#xff1a;机房及服务器集群建设 …

HPC超算网络资源

HPC超算资源 资源 Blue Water 超算William D. GroppOSU benchmarksTuning MPI Applications for Peak Performance W.D.Gropp苏黎世联邦理工 Scalable Parallel Computing LaboratoryNERSC超算文档资料HPC Wikipipeline-parallelism 课程 Design of Parallel and High-Perfor…

word文档中英文行间距不一样怎么解决

方法/步骤1: 在编辑文档时发现在有英文的段落中&#xff0c;行间距与没有要英文的不同&#xff0c;如图&#xff1a; 方法/步骤2: 该如何解决呢&#xff1f;首先鼠标选中有英文的段落&#xff0c;或者CTRLA全选&#xff1a; 方法/步骤3: 然后选中功能选项卡的开始选项卡&…

word文档中设置的行距一样但实际显示的不一样

最近发现了一个很奇怪的问题&#xff0c;思考了好久好久&#xff0c;找不到原因&#xff0c;果然还是对于office不够了解呀。 问题缘由 word2013中&#xff0c;同样一段文字&#xff0c;字体字号行间距都设置了相同的&#xff0c;但是为什么看起来行间距好像不一样&#xff1…

【word】复制到word的文字不能调整行间距(行间距过大)

问题&#xff1a; 复制到word的文字不能调整行间距&#xff08;行间距过大&#xff09; 原因&#xff1a; 行距和文档网格冲突了。行距是为了控制行距而存在的&#xff0c;文档网格是为了控制每页的行数而存在的。 解决方法是&#xff1a;在“段落”设置里把“对齐到文档网格“…

word行中公式和文字对不齐解决办法

1、段落——中文版式——文本对齐方式&#xff08;居中和自动都试试&#xff09;&#xff08;大部分都能解决&#xff09; 优点&#xff1a;大批量解决对不齐文本 2、双击对不齐的公式打开mathtype——格式&#xff08;M&#xff09;——内联公式&#xff08;I&#xff09;选中…