JS知识点
1、其他值到字符串的转换规则?
- Null和Undefined类型,null转化为 'null ' ,undefined转化为‘undefined’
- Boolean类型,true转化为‘true’,false转化为 ‘ false’
- Symbol类型的值直接转换,但是只允许显示强制类型转换,使用隐式强制类型转换会产生错误。
强制类型转化:通过一些代码进行类型的转化,更精确地控制特定的数据类型转换例如:Number
隐式类型转化:自动完成的类型转换,字符串和数字相加时,JavaScript 引擎会自动将数字转换为字符串,然后将它们连接在一起。
- Number类型的值直接转化。
- 对象:除非自定义的toString()方法,否则会调用对象的原型上的toString()来返回内部属性[object Object],如果对象有自定义的toString()方法,字符串转化时就会调用该方法并使用其返回值.
const obj = {name: "John",age: 30,gender: "male"
};console.log(obj.toString()); // [object Object]
2、 其他值到数字值的转化规则
- Undefined类型的值转化未NaN。
- Null类型的值转化为0.
- Boolean类型的值,true转化为1,false转化为0
- String类型的值转化,使用Numner函数进行转化,如果包含非数字值则转化为NaN,空字符串转化为0.
- 对象:包括数组,
(1)会首先被转化为相应的基本类型值,如果返回的是非数字的基本类型值,则会将其强制转化为数字。
(2)JS会自动调用valueOf()来获取一个原始值,如果获取到的值不是一个原始值,JS会继续调用对象的toString方法来回一个字符串,并将该字符串转化为数值。如果既没有valueOf方法也没有toString()方法,那么将会抛出异常。
原始值:Undefined、Null、Boolean、Number、String 和 Symbol。
const obj = {a: 10,toString: function() {return "20";}
};console.log(Number(obj)); // 20
toString()方法是程序员自己定义的。在 JavaScript 中,大部分对象都继承了Object对象的toString()方法,该方法默认返回一个字符串 "[object Object]",并不能将对象用于数学运算或者进行类型转换。因此,当我们需要将一个对象转换为数值时,我们需要自定义对象的valueOf()或toString()方法来返回合适的值。
3、其他值到布尔类型的值的转换规则?
undefined、null、false、0、NaN都是假值
4、Object.is() 与⽐较操作符 “ === ”、“== ” 的区别?
"==":不全相等,只比较数据,不比较类型,如果两边的类型不一致,会进行强制类型的转化再比较。
"===":全等,不做强制类型的转化,直接返回false,-0和+0相等,两个NaN不相等的。
Object.is:一般情况下和三等号的判断相同,比如-0和+0不再相等,两个NaN是相等的。
5、object.assign和扩展运算法是深拷贝还是浅拷贝,两者区别:
🔰 :深拷贝和浅拷贝:
- 深拷贝:深拷贝是指对一个对象进行复制,复制出一个新的对象,并且新对象中的每一个属性都是通过递归复制而来的,即新对象和原对象没有任何引用关系。
- 浅拷贝:浅拷贝只会复制对象的基本属性,拷贝出来的新对象和原对象指向通过一内存地址。
object.assign和扩展运算是浅拷贝:
let Outobject = {inObject:{a:1,b:2}}
let newObject = {...Outobject}
newObject.inObject.a = 2
console.log(Outobject); //{inObject:{a:1,b:2}}
let Outobject = {inObject:{a:1,b:2}}
let newObject = Object.assign(Outobject)
newObject.inObject.a = 2
console.log(Outobject); //{inObject:{a:1,b:2}}
从代码发现,当newObject将inObject中的a的值改变时,OutObject中的值也发生变化,所以为浅拷贝。
🔰 :区别
1. Object.assign是将所有可枚举属性的值从一个或多个源对象复制到目标对象,如果目标对象已有该属性,则会覆盖该属性,只能拷贝对象的自身属性,可以复制继承属性,但只能复制可枚举的继承属性
2. 扩展运算符用于将一个对象展开为另一个对象的属性。它不复制继承的属性或类的属性,但是它会复制ES6 的 symbols 属性
symbols :被用于定义对象的私有属性
相关文章:
JS知识点
1、其他值到字符串的转换规则? - Null和Undefined类型,null转化为 null ,undefined转化为‘undefined’ - Boolean类型,true转化为‘true’,false转化为 ‘ false’ - Symbol类型的值直接转换,但是只允许显示强制类…...
FFmpeg YUV 编码 H264
1. x264 库 由于 FFmpeg 不支持 h264 编码,所以需要集成 x264 库,现在使用的是当前最新版本 1.1 官方下载地址: videolanhttps://www.videolan.org/developers/x264.html 1.2 编译脚本地址: x264-ioshttps://github.com/kewlbear/x264-ios 1.3 将下载的 x264 库和 x264...
cuda-trt 学习
https://github.com/jinmin527/learning-cuda-trt learning-cuda-trt A large number of cuda/tensorrt cases在这个project中,提供大量的cuda和tensorrt学习案例cuda驱动apicuda运行时apitensorRT基础入门 基本的tensorRT学习插件、onnx解析器 tensorRT高阶应用 …...
Spot CEO:我们为什么选择Babylon.js而不是Three.js
为现代网络开发令人兴奋的事情之一是底层平台的快速发展。 WebAssembly、WebGL、WebGPU、Web Worker 等正在解锁以前典型 Web 产品无法想象的体验。 在过去的几年里,我们看到像 Figma 这样的产品利用这一点创造了极具吸引力的业务和产品。 推荐:用 NSDT设…...
arm安装pyrealsense
arm安装pyrealsense – Step 1 – conda install numba pip install opencv-python pip install scipy – Step 2 pyrealsense2 – 参考 https://github.com/35selim/RealSense-Jetson 编译安装pyrealsense2 git clone -b v2.50.0 --depth1 https://github.com/IntelRealSens…...
day36_jdbc
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、JDBC 二、登录 三、ORM 零、 复习昨日 sql语言:DDL DML DQL DCL create table 表名(id int primary key auto_increment,sname varchar(2…...
C++好难(6):模板初阶
【本节目标】 1. 泛型编程2. 函数模板3. 类模板 目录 【本节目标】 1.泛型编程 2.函数模板 概念: 格式: 原理: 实例化: 1.隐式实例化: 2.显式实例化 原则一: 原则二: 原则三&#…...
Windows 10字体模糊发虚! 如何解决?
在使用Windows 10操作系统的过程中,有些用户可能会遇到字体模糊、发虚的问题,这给用户的视觉体验带来了不小的困扰。本文将介绍几种解决Windows 10字体模糊发虚问题的方法。 一、更新显卡驱动程序 如果更新显卡驱动程序后问题仍未解决,那么很…...
Spring中的Bean和Bean的生命周期
在Spring中,Bean是被管理的对象,是应用程序的基本组件。Bean的生命周期包括Bean的创建、初始化、使用和销毁。在本文中,我们将介绍Spring中Bean的概念,如何创建和管理Bean以及Bean的生命周期。 Bean的概念 在Spring中࿰…...
嘉兴桐乡技能培训提升-如何提高工作效率
现在的工作基本上都离不开电脑,所以大家几乎天天都在跟电脑打交道,那么这些电脑使用技巧你知道多少呢?今天桐乡办公软件培训沈老师就给大家分享一下: 如何让“自动更正”输入统一的文本 你是不是经常为输入某些固定的文本&#x…...
SystemFunction032函数的免杀研究
什么是SystemFunction032函数? 虽然Benjamin Delphi在2013年就已经在Mimikatz中使用了它,但由于我之前对它的研究并不多,才有了下文。 这个函数能够通过RC4加密方式对内存区域进行加密/解密。例如,ReactOS项目的代码中显示&…...
Shell函数
目录 1.Shell的作用 2.Shell函数定义 3.函数变量的作用范围 Source 4.递归 5.函数库 编辑编辑编辑 1.Shell的作用 使用函数可以避免代码重复 使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强 2.Shell函数定义 1) functi…...
Spring-IOC源码解析
容器创建过程 Spring容器的refresh方法 public void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {StartupStep contextRefresh this.applicationStartup.start("spring.context.refresh");// 1. 进行创…...
不会做大数据实时计算?10年数据分析师整理,一文给出解决方案
本文分为四个章节介绍实时计算,第一节介绍实时计算出现的原因及概念;第二节介绍实时计算的应用场景;第三节介绍实时计算常见的架构;第四节是实时数仓解决方案。 一、实时计算 实时计算一般都是针对海量数据进行的,并…...
如何让你的 WebSocket 接口测试更高效?拯救你的接口测试工作
目录 引言 WebSocket介绍 HTTP与WebSocket的区别 WebSocket测试方法 使用在线工具 使用Postman 使用Jmeter 使用Python 结语 引言 你是否曾经为 WebSocket 接口测试中复杂的协议和难以捕获的数据而感到束手无策?WebSocket 协议与传统的 HTTP 协议不同&…...
浅谈Linux 文件系统层次结构的组织方式
Linux 文件系统层次结构(Filesystem Hierarchy Standard,简称 FHS)是一种用于组织和管理 Linux 文件系统的标准化方式。该标准规定了 Linux 文件系统中各个目录和文件的组织方式、用途和权限,以提高文件系统的可读性、可维护性和可…...
创新案例 |探索 Tive 80% 的收入增长得益于智能物流服务、跟踪和实时可视化
您正在寻找可靠的物流解决方案吗? Tive 是领先的智能物流服务提供商,提供跟踪和实时可见性解决方案。使用 Tive,您可以主动监控公路、空运、海运和铁路运输。它可以帮助您减少运输问题并确保准时和全面交付,从而改善客户体验。 …...
makefile和cmake
Makefile 是一种文件,它定义了一个项目中的编译规则、依赖关系和构建过程。Makefile 可以自动化地构建和管理项目,使得整个项目的构建过程更加高效和可靠。下面是 Makefile 的常用语法: 1. 定义变量 变量可以用来保存一些常用的参数和路径&…...
通过OpenCL内核代码猜测设备寄存器个数
在OpenCL标准中,没有给出查看计算设备一共有多少寄存器,至少能分配给每个work-item多少寄存器使用的特征查询。而由于一个段内核代码是否因寄存器紧缺而导致性能严重下降也是一个比较重要的因素,因此我这边提供一个比较基本的方法来猜测当前计…...
C# + .Net6 实现TensorFlow图片分类
微软官网上发现一篇很有意思的文档:教程:用于对图像进行分类的 ML.NET 分类模型 - ML.NET | Microsoft Learn 这篇教程写的很学院派,但有点碎,属于上课不能打一秒钟瞌睡的那种。好在还是给出了完整的代码:samples/Pro…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...
