2024 前端面试题 附录2

这里记录的是今天原篇的知识点补充

原篇地址:2024 前端面试题(GPT回答 + 示例代码 + 解释)No.21 - No.40


目录

    • 这里记录的是今天原篇的知识点补充
      • 原篇地址:[2024 前端面试题(GPT回答 + 示例代码 + 解释)No.21 - No.40](https://blog.csdn.net/m0_67023788/article/details/136104057)
      • 27补. JavaScript中如何检测一个变量是什么类型?
      • 37补. 浅拷贝 与 深拷贝 手写实现
        • 浅拷贝
        • 深拷贝


27补. JavaScript中如何检测一个变量是什么类型?

通过 Object.prototype.toString.call() 方法,可以得到以下类型的变量信息:

  1. 对象类型:返回 "[object Object]"。这包括自定义的对象、数组、函数等。
  2. 数组类型:返回 "[object Array]"
  3. 字符串类型:返回 "[object String]"
  4. 数字类型:返回 "[object Number]"
  5. 布尔类型:返回 "[object Boolean]"
  6. 函数类型:返回 "[object Function]"
  7. 正则表达式类型:返回 "[object RegExp]"
  8. 日期类型:返回 "[object Date]"
  9. 错误类型:返回 "[object Error]"
  10. Map 类型:返回 "[object Map]"
  11. Set 类型:返回 "[object Set]"
  12. Symbol 类型:返回 "[object Symbol]"
  13. Promise 类型:返回 "[object Promise]"
  14. ArrayBuffer 类型:返回 "[object ArrayBuffer]"
  15. DataView 类型:返回 "[object DataView]"
  16. Int8Array 类型:返回 "[object Int8Array]"
  17. Uint8Array 类型:返回 "[object Uint8Array]"
  18. Uint8ClampedArray 类型:返回 "[object Uint8ClampedArray]"
  19. Int16Array 类型:返回 "[object Int16Array]"
  20. Uint16Array 类型:返回 "[object Uint16Array]"
  21. Int32Array 类型:返回 "[object Int32Array]"
  22. Uint32Array 类型:返回 "[object Uint32Array]"
  23. Float32Array 类型:返回 "[object Float32Array]"
  24. Float64Array 类型:返回 "[object Float64Array]"

这些字符串表示了各种不同类型的变量。通过使用 Object.prototype.toString.call(variable),我们可以根据返回的结果来确定变量的类型。

typeof 是 JavaScript 内置的一个操作符,用于检测给定变量的数据类型。它返回一个字符串,表示变量的数据类型。

typeof 操作符可以返回以下几种数据类型:

  1. "undefined":如果变量未定义或未声明时返回该类型。
  2. "boolean":如果变量是布尔值( truefalse),返回该类型。
  3. "number":如果变量是数字(包括整数、浮点数、负数、正数等),返回该类型。
  4. "string":如果变量是字符串,返回该类型。
  5. "object":如果变量是一个对象 (不包括 null) 或数组,返回该类型。
  6. "function":如果变量是一个函数,返回该类型。

需要注意的是,typeof 返回的类型都是字符串类型,而非实际的数据类型。在使用 typeof 进行类型检测时,应该将返回值作为字符串进行比较。

例如:

let x;console.log(typeof x); // 输出 "undefined"x = true;console.log(typeof x); // 输出 "boolean"x = 42;console.log(typeof x); // 输出 "number"x = "Hello, world!";console.log(typeof x); // 输出 "string"x = {};console.log(typeof x); // 输出 "object"x = [];console.log(typeof x); // 输出 "object"x = function() {};console.log(typeof x); // 输出 "function"

上述示例展示了 typeof 操作符返回的各种数据类型。需要注意的是,在某些情况下,typeof 操作符返回的类型可能与实际数据类型不太相符。例如,typeof null 返回 “object”,而不是 “null”。


37补. 浅拷贝 与 深拷贝 手写实现

浅拷贝
function shallowCopy(obj) {var target = {};for (var prop in obj) {if (obj.hasOwnProperty(prop)) {target[prop] = obj[prop];}}return target;
}var source = { name: "Alice", age: 25 };
var target = shallowCopy(source);console.log(target); // 输出 { name: "Alice", age: 25 }
深拷贝
function deepCopy(obj) {// 处理 null 和 undefinedif (obj === null || typeof obj !== "object") {return obj;}// 处理日期对象if (obj instanceof Date) {return new Date(obj.getTime());}// 处理正则表达式对象if (obj instanceof RegExp) {return new RegExp(obj);}// 处理数组对象if (Array.isArray(obj)) {var newArr = [];for (var i = 0; i < obj.length; i++) {newArr.push(deepCopy(obj[i]));}return newArr;}// 处理其他对象var newObj = {};for (var prop in obj) {if (obj.hasOwnProperty(prop)) {newObj[prop] = deepCopy(obj[prop]);}}return newObj;
}var source = { name: "Alice", age: 25, hobbies: ["reading", "swimming"] };
var target = deepCopy(source);console.log(target); // 输出 { name: "Alice", age: 25, hobbies: ["reading", "swimming"] }target.hobbies.push("running");
console.log(source.hobbies); // 输出 ["reading", "swimming"]
console.log(target.hobbies); // 输出 ["reading", "swimming", "running"]

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

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

相关文章

2024 CKS 题库 | 7、Dockerfile检测

不等更新题库 CKS 题库 7、Dockerfile检测 Task 分析和编辑给定的Dockerfile /cks/docker/Dockerfile&#xff08;基于ubuntu:16.04 镜像&#xff09;&#xff0c; 并修复在文件中拥有的突出的安全/最佳实践问题的两个指令。 分析和编辑给定的清单文件 /cks/docker/deployme…

Python·turtle库编程之:怎么画一个五角星?

文章目录 前言源码附&#xff1a; 前言 大家好&#xff0c;我是BoBo仔&#xff0c;这节课我要带来一期turtle库的使用教程——画五角星。话不多说&#xff0c;我们直接上代码。 源码 import turtle as t t.pencolor(yellow) t.fillcolor("yellow") t.penup() t.go…

全栈笔记_插件篇(谷歌扩展插件开发系列之 manifest.json配置文件)

manifest.json介绍 是web扩展技术必不可少的插件配置文件,放在根目录作用: 指定插件的基本信息 name:名称manifest_version:manifest.json文件的版本号,可以写2或3version:版本description:描述定义插件的行为: browser_action:定义插件在浏览器工具栏中的操作按钮,例…

react 【七】各种hooks的使用/SPA的缺点

文章目录 1、Hook1.1 为什么会出现hook1.2 useState1.3 useEffect1.4 useContext1.5 useReducer1.6 useCallback1.7 useMemo1.8 useRef1.8.1 ref绑定dom1.8.2 ref解决闭包缺陷 1.9 useImperativeHandle1.10 useLayoutEffect1.11 自定义Hook1.11.1 什么是自定义Hook1.11.2 Conte…

Rust 数据结构与算法:3栈:用栈实现符号匹配

1、符号匹配 如&#xff1a; (56)(78)/(43)、{ { ( [ ] [ ])}}、(ab)(c*d)func() 等各类语句的符号匹配。 这里我们关注的不是数字而是括号&#xff0c;因为括号更改了操作优先级&#xff0c;限定了语言的语义&#xff0c;这是非常重要的。如果括号不完整&#xff0c;那么整个…

【Deep Learning 1】神经网络的搭建

&#x1f31e;欢迎来到PyTorch的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月16日&a…

消息队列RabbitMQ-使用过程中面临的问题与解决思路

消息队列在使用过程中会出现很多问题 首先就是消息的可靠性&#xff0c;也就是消息从发送到消费者接收&#xff0c;消息在这中间过程中可能会丢失 生产者到交换机的过程、交换机到队列的过程、消息队列中、消费者接收消息的过程中&#xff0c;这些过程中消息都可能会丢失。 …

gem5 garnet 合成流量: packet注入流程

代码流程 下图就是全部. 剩下文字部分是细节补充,但是内容不变: bash调用python,用python配置好configuration, 一个cpu每个tick运行一次,requestport发出pkt. bash 启动 python文件并配置 ./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py \--num-cpus…

安卓游戏开发框架应用场景以及优劣分析

一、引言 在移动游戏开发领域&#xff0c;选择合适的开发框架是项目成功的关键因素之一。特别是对于安卓平台&#xff0c;由于其开放性和庞大的用户基础&#xff0c;不同的游戏开发框架应运而生&#xff0c;旨在帮助开发者高效地构建游戏应用。以下是一些流行的安卓游戏开发框架…

你好,C++(15)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符

4.1.4 关系操作符 在C中&#xff0c;除了需要用算术操作符对数据进行加减乘除的算术操作之外&#xff0c;我们有时候还需要对数据之间的关系进行操作&#xff0c;也就是对两个数据进行大小比较&#xff0c;得出它们之间的大小关系。在现实世界中&#xff0c;这种大小关系的比较…

vue-组件组成和组件通信(四)

组件的三大组成部分 (结构/样式/逻辑) scoped样式冲突 默认情况&#xff1a;写在组件中的样式会 全局生效 → 因此很容易造成多个组件之间的样式冲突问题。 1. 全局样式: 默认组件中的样式会作用到全局 2. 局部样式: 可以给组件加上 scoped 属性, 可以让样式只作用于当前组…

探索未来科技:人工智能与量子计算的新纪元

引言 在这个科技飞速发展的时代&#xff0c;我们正站在一个全新的起点。人工智能&#xff08;AI&#xff09;和量子计算作为两项颠覆性的技术&#xff0c;正引领着科技的未来。在这篇博客中&#xff0c;我们将深入探讨人工智能与量子计算的最新进展&#xff0c;以及它们如何改…

pytorch创建模型方式

1.继承自nn.Module的方式 from torch import nn import torch.nn.functional as F 继承自nn.Moduleclass LModel(nn.Module):def __init__(self):super().__init__()self.L1 nn.Linear(10,10)self.L2 nn.Linear(10,64)self.L3 nn.Linear(64,10)self.L4 nn.Linear(10,5)se…

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口&#xff1a;今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数&#xff08;constructor)3.完善迭代器&#xff08;iterator&#xff09;(begin(),end())4.List Capacity&#xff08;size(),empty())4.增删改查(push_back,pop_back,pop_f…

C++ bfs反向搜索(五十七)【第四篇】

今天我们来学习bfs的反向搜索。 1.反向搜索 反向搜索&#xff1a;是从目标状态出发进行的搜索&#xff0c;一般用于终点状态唯一&#xff0c;起点状态有多种&#xff0c;且状态转移是可逆的&#xff08;无向边&#xff09;情况。 例题&#xff1a;在一个长度为 n 的坐标轴上&a…

医药零售企业运营BI解决方案 连锁药房大数据解决方案 药店大数据解决方案

一、项目背景 连锁药店大数据项目建设的背景可以从以下几个方面进行分析: 行业趋势:随着医药行业的快速发展,连锁药店已成为药品零售的主要渠道。然而,随着市场竞争的加剧,连锁药店需要寻找新的竞争优势。通过大数据技术,连锁药店可以更好地了解消费者需求,提供个性化的…

2024年【T电梯修理】报名考试及T电梯修理复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 T电梯修理报名考试参考答案及T电梯修理考试试题解析是安全生产模拟考试一点通题库老师及T电梯修理操作证已考过的学员汇总&#xff0c;相对有效帮助T电梯修理复审考试学员顺利通过考试。 1、【多选题】增加旧电梯曳引…

p图考试,搜题软件哪个好?如何利用大学搜题工具查找特定学科的题目? #微信#知识分享

大学生必备&#xff0c;这条笔记大数据一定定要推给刚上大学的学弟学妹&#xff01;&#xff01; 1.三羊搜题 这是个微信公众号 是个公众号&#xff0c;支持文字、语音、截图搜题&#xff0c;截图搜题&#xff0c;同时也支持相似题查看及解析&#xff0c;因为可以在电脑上使…

【医学图像分割 2024】VM-UNet

文章目录 【医学图像分割 2024】VM-UNet摘要1. 介绍2. 预备知识3. 方法3.1 VM-UNet3.2 VSS Block3.3 损失函数 4. 实验4.1 数据集4.2 实现细节4.3 主要结果4.4 消融实验 5. 结果 【医学图像分割 2024】VM-UNet 论文题目&#xff1a;VM-UNet Vision Mamba UNet for Medical Imag…

Junit测试套件(Test Suite)

0. 什么是测试套件 对多个测试类的统一执行 只有一个测试类 点击一下执行就好有 5个测试类 分别打开 挨个点执行有100个测试类 &#xff1f;&#xff1f;分别点开执行 为100个测试类创建一个测试套件&#xff0c;然后再执行一次测试套件 √ 一个测试套件“囊括“三个测试类…