前端面试之JavaScript题目,简单全面(持续更新ing...)

news2024/11/25 0:57:33

数据类型

1.JavaScript有哪些数据类型,它们的区别?

类型:JavaScript共有8种数据类型,undefined,null,Boolean,string,number,bigint,symbol,object。
其中symbol和bigint是es6中新增的。
symbol代表创建后独一无二且不可变的数据类型,主要为了解决可能出现的全局变量冲突的问题。
bigint可以安全的存储和操作大整数。
区别
在这里插入图片描述

2.JavaScript中数据类型的检测方式有哪些?

  1. 使用typeof判断,其中数组,对象,null,都会被判断为object,其他数据类型可以正确判断。例如typeof 123 'number'
  2. 使用instanceof判断对象的类型,内部运行机制是判断其在原型链中能否找到该类型的原型,因此instanceof只能用于判断引用类型的数据,不能判断基本类型。例如:[] instanceof Array true
  3. 使用constructor判断,但null,undefined不可使用,因为它们不是由对象构建。例如:true.constructor ƒ Boolean() { [native code] }
  4. 使用Object.prototype.toString.call() 使用Object对象的原型方法toString来判断数据类型。例如:Object.prototype.toString.call(123); '[object Number]'

3.判断数组的方式有哪些?

  1. 通过ES6Array.isArray()判断
  2. 通过原型链判断arr.__proto__ === Array.prototype
  3. 通过instanceof判断arr instanceof Array
  4. 通过Object判断 Object.prototype.toString.call(arr);
  5. 通过**isPrototypeOf()**判断 Array.prototype.isPrototypeOf(arr);

4.null和undefined区别?

null代表的是空对象,一般用于返回值可能为对象的变量的初始化。
undefined代表未定义,变量声明了但是未赋其值时返回值可能为undefined

5.instanceof操作符的实现及其原理?

原理:instanceof通过判断构造函数的prototype属性是否出现在对象的原型链中来判断数据是否属于该类型

function myInstanceOf(left, right) {
  let proto = Object.getPrototypeOf(left);
  let prototype = right.prototype;
  while (true) {
    if (!proto) {
      return false;
    }
    if (proto === prototype) {
      return true;
    }
    proto = Object.getPrototypeOf(proto);
  }
}

console.log(myInstanceOf([], Array)); //true
console.log([] instanceof Array); //true
console.log(myInstanceOf(123, Array)); //false
console.log(123 instanceof Array); //false

6.为什么0.1+0.2 !== 0.3? 如何让其相等?

因为计算机是通过二进制的方式存储数据的,所以计算机计算0.1+0.2的时候,实际上是计算的两个数的二进制的和。而这两个数的二进制都是无限循环的数。
如何相等(n1+n2).toFixed(2);

7.typeof NaN 的结果是什么

typeof NaN; // ‘number’
NaN是一个特殊值 它和自身不相等 所以 NaN !== NaN 为true

8.其它值到字符串的转换规则

Null和Undefined 转换成 ‘null’和’undefined’
Boolean类型 true转换’true’ false转换’false’
Number类型的值直接转换 不过极大极小的数字会使用指数形式
Symbol类型的值直接转换,但只允许显式强制类型转换
对于普通对象来说 一般会调用Object的toString()方法(Object.prototype.toString())来返回内部属性[[class]]的值,如”[object Object]“;如果对象有自己的toString()方法,字符串化时就会调用该方法并使用其返回值

9.其他值到数字值的转换规则

Undefined类型的值转换为NaN
Null类型的值转换为0
Boolean类型的值,true转换为1 false转换为0
String类型的值转换如同使用Number()函数进行转换,如果包含非数字值则转换为NaN,空字符串为0
Symbol类型的值不能转换为数字 会报错
对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,再遵循上述的规则将其强制转换为数字

10.其他值到布尔类型的值的转换规则

除了 undefined null false +0 -0 NaN “” 以外 都是true

11.Object.is()与比较操作符 "=" ""的区别

(Object.is(A,B)方法判断两个值是否是相同的值。)
双等号进行相等判断时,如果两边的类型不一致,会先进行强制类型转换后再进行比较
三等号
=)进行相等判断时,如果两边的类型不一致,不会做强制类型转换,直接返回false
使用Object.is进行相等判断时,一般情况下和三等号判断相同,它处理了一些特殊情况,比如-0和+0不再相等,两个NaN是相等的

12.如何判断一个对象是空对象

if(Json.stringify(obj) == '{}'){
	console.log('空对象');
}

if(Object.keys(obj).length < 0){
	console.log('空对象');
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K-计算面积

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小w给你三种图形&#xff0c;可能是平行四边形&#xff0c;三角形&#xff0c;梯形&#xff0c;对于给定的TTT个图形&#xff0c;你需要依次回答每个图形的面积&#xff0c;保证答案…

《LeetCode》——LeetCode刷题日记

本期&#xff0c;将给大家带来的是关于 LeetCode 的关于二叉树的题目讲解。 目录 &#xff08;一&#xff09;606. 根据二叉树创建字符串 &#x1f4a5;题意分析 &#x1f4a5;解题思路 &#xff08;二&#xff09;102. 二叉树的层序遍历 &#x1f4a5;题意分析 &#…

docker stats 命令详解

docker stats : 显示容器资源的使用情况&#xff0c;包括&#xff1a;CPU、内存、网络 I/O 等。 docker stats [OPTIONS] [CONTAINER...]OPTIONS 说明&#xff1a; –all , -a :显示所有的容器&#xff0c;包括未运行的。 –format :指定返回值的模板文件。 –no-stream :展…

( “树” 之 BFS) 637. 二叉树的层平均值 ——【Leetcode每日一题】

637. 二叉树的层平均值 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 1 0 − 5 10^{-5} 10−5 以内的答案可以被接受。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[3.00000,14.50000,1…

060202体积弧长-定积分在几何学上的应用-定积分的应用

文章目录 2 体积2.1 旋转体的体积2.2 平行截截面面积已知的立体的体积2.3 例题 3 平面曲线的弧长2.1 直接坐标系2.2 参数方程2.3 极坐标系 结语 2 体积 2.1 旋转体的体积 情形①平面图形由 y f ( x ) , y 0 , x a , x b yf(x),y0,xa,xb yf(x),y0,xa,xb所围成&#xff0c;…

LeetCode——1041. 困于环中的机器人

一、题目 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。注意: 北方向是y轴的正方向。 南方向是y轴的负方向。 东方向是x轴的正方向。 西方向是x轴的负方向。 机器人可以接受下列三条指令之一&#xff1a; “G”&#xff1a;直走 1 个单位 “L”…

seata1.5.2+nacos2.10配置教程

seata1.5.2配置教程本文基于nacos2.1.0mysql8.0seata1.5.21.下载安装包 官网&#xff1a;http://seata.io/zh-cn/blog/download.html seata目录结构如图&#xff1a; 2.主要需要修改的配置文件是\seata\conf\application.yml,可参考示例application.example.yml server:port:…

SpringBoot项目集成JMH测试用例

SpringBoot项目集成JMH测试用例1. JMH2. JMH使用2.1 pom引用JMH2.2 BaseBenchmark3. 部分注解介绍4. Jenkins 集成 JMH4.1 下载插件配置Job1. JMH JMH&#xff08;Java Microbenchmark Harness&#xff09;是一个 Java 工具&#xff0c;用于构建、运行和分析用 Java 和其他针对…

【redis】缓存双写一致性之工程落地实现(下)

【redis】缓存双写一致性之工程落地实现&#xff08;下&#xff09; 本篇由于没有进行实操&#xff0c;所以没有记录详细的配置内容 文章目录 【redis】缓存双写一致性之工程落地实现&#xff08;下&#xff09;本篇由于没有进行实操&#xff0c;所以没有记录详细的配置内容 前…

树莓派 GPIO口控制双色LED灯

目录 一、首先加载库 二、设置编码规范 三、去除GPIO口警告 四、进行详细编程 五、程序源码 GPIO&#xff08;General Purpose I/O Ports&#xff09;意思为通用输入/输出端口&#xff0c;通过它们可以输出高低电平或者通过它们读入引脚的状态&#xff08;是高电平或是低电…

Faster RCNN系列——RPN的真值详解

RPN的真值分为类别真值和偏移量真值&#xff0c;即每一个Anchor是否对应着真实物体&#xff0c;以及每一个Anchor对应物体的真实偏移值&#xff0c;这两种真值的具体求解过程如下图所示&#xff1a; Anchor生成 Anchor生成的具体过程可参考Faster RCNN系列——Anchor生成过程&a…

C++|引用篇

目录 引用概念 引用的用法 做函数形参 优点一 优点二 引用做返回值 让我们更深入的了解引用与指针 语法层引用与指针完全不同的概念 站在底层的角度看指针与引用 引用概念 在语言层面上&#xff1a;引用不是定义新的变量&#xff0c;而是给已存在变量再取一个别名&am…

Spring——读取和存储(包含五大注解,对象装配,注入关键字)

目录 一、创建Spring项目 1. 创建一个普通的maven项目 2. 添加Spring框架支持&#xff08;spring-context&#xff0c;spring-beans&#xff09; 3. 添加启动类 二、Bean对象的读取和存储——不使用注释版 1. 创建Bean 2. 将Bean注册到容器 3. 获取并使用Bean对象 3.1…

Faster RCNN系列——Anchor生成过程

一、RPN模块概述 RPN模块的输入、输出如下&#xff1a; 输入&#xff1a;feature map&#xff08;输入图像经过特征提取网络后得到的特征图&#xff09;、物体标签&#xff08;训练集中所有物体的类别和边框信息&#xff09;输出&#xff1a;Proposal&#xff08;生成的建议框…

KD-2125地下管线故障测试仪

一、产品概述 KD-2125电缆综合探测仪&#xff08;管线仪&#xff09;可进行地下电缆线路&#xff08;停电/带电&#xff09;和金属管道等敷设路径探测、识别、埋深测量&#xff1b;以及路灯电缆、地埋线路的故障查找等&#xff0c;同时也可进行地下带电线缆排查。该设备以其优越…

Android---内存性能优化

内存抖动 内存抖动是由于短时间内有大量对象进出新生区导致的&#xff0c;内存忽高忽低&#xff0c;有短时间内快速上升和下落的趋势&#xff0c;分析图呈锯齿状。 它伴随着频繁的 GC&#xff0c;GC 会大量占用 UI 线程和 CPU 资源&#xff0c;会导致 APP 整体卡顿&#xff08;…

07 dubbo源码学习_集群Cluster

1. 入口2. 源码分析2.1 FailbackClusterInvoker2.2 FailoverClusterInvoker 失败自动切换2.3 FailfastClusterInvoker 快速失败2.4 FailsafeClusterInvoker 失败安全2.4 FailsafeClusterInvoker 并行调用多个服务提供者,只要有一个返回,就立即响应3. 如何使用本篇主要介绍集群…

Python VTK STL 映射三维模型表面距离

目录 前言&#xff1a; 效果&#xff1a; 实现步骤&#xff1a; Code: 前言&#xff1a; 本文介绍了Python VTK映射三维模型表面距离&#xff0c;通过如何使用VTK计算两个三维模型(stl)的表面距离&#xff0c;并将其距离值以颜色映射到模型&#xff0c;可用于对比 两相模型…

智慧养老平台建设方案word

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 1、 总体设计 1.1 建设原则 养老机构智能化管理工程是一项涉及多学科知识的复杂的系统工程&#xff0c;养老机构智能化管理围绕机构发展战略&#xff0c;立足机构需求&…

超星项目er图,进程

一.er图 二. 进程&#xff1a;发现之前的写的分类太乱而且服务端与客户端未分离&#xff0c;于是分离客户端与服务端&#xff0c;然后将客户端的界面三个程序整理放在三个包下&#xff0c;在服务端与客户端的数据交互方面采用序列化与反序列化进行功能判断采用以及数据传输&a…