JavaScript:隐式转换、显示转换、隐式操作、显示操作
一、理解js隐式转换
JavaScript 中的隐式转换是指不需要显式地调用转换函数,而是在执行期间自动发生的数据类型的转换。即在使用不同类型的值进行操作时,JavaScript会自动进行类型转换。这种转换通常发生在不同数据类型之间进行运算或比较时。
序号 | 分类 |
1 | 字符串与数字之间的转换 当使用加号(+)运算符将字符串和数字进行拼接时,JavaScript会将数字转换为字符串类型,实现字符串与数字的拼接。 |
2 | 将字符串转换为数字 当使用减号(-)运算符时,JavaScript会将字符串转换成数字类型进行运算。 |
3 | 布尔值与数字之间的转换 当使用布尔值和数字进行运算时,JavaScript会将布尔值转换成数字类型,true 转换为 1,false 转换为 0。 |
4 | 对象和原始值之间的转换 当使用对象和原始值进行运算时,JavaScript会自动将对象转换成原始值类型,例如将对象转换成字符串时会调用对象的 toString() 方法。 |
5 | 隐式转换为布尔值 当判断条件中使用非布尔值时,JavaScript会将其转换成布尔值,例如将数字 0、空字符串、null、undefined、NaN等转换为 false,其它值都转换为 true。 |
序号 | 类型 | 实例 |
1 | 字符串与数字的相加(隐式转换成字符串) | "1" + 2 // "12" |
2 | 字符串与布尔值的相加(隐式转换成字符串) | "true" + true // "truetrue" |
3 | 数字与布尔值的相加(隐式转换成数字) | 1 + true // 2 |
4 | 数组与字符串的相加(隐式转换成字符串) | [1, 2, 3] + "hello" // "1,2,3hello" |
5 | 数字与字符串的比较(隐式转换成数字) | "1" > 2 // false "1" < 2 // true |
6 | 布尔值与数字的相乘(隐式转换成数字) 布尔值与数字的相加(隐式转换成数字) | true * 2 // 2 true + 1 // 2 |
7 | 对象与布尔值的比较(隐式转换成布尔值) | if ({}) { // 这里的代码会执行 } |
8 | 数字类型作为条件转换为布尔值(隐式转换成布尔值) | var num = 0; if (num) { console.log("num is true"); // 不会执行到这 } |
9 | undefined和null的转换 将undefined转为数字类型时,结果为NaN 将null转为数字类型时,结果为0 将undefined和null转为布尔类型时,结果均为false | Number(undefined) // NaN Number(null) // 0 Boolean(undefined) // false Boolean(null) // false |
10 | 字符串与数字加、减、乘、除 | "10" + 1 // "101" "10" - 1 // 9 "10" * 2 // 20 "10" / 2 // 5 "10" / "two" // NaN |
11 | 当一个对象参与加法运算时,会自动调用对象的 valueOf() 方法或 toString() 方法将对象转换成字符串或数字 1、如果对象具有 2、如果对象没有 3、如果对象没有 |
JavaScript 中的隐式转换有时可能会导致出乎意料、不符合预期的结果,特别是当开发人员不熟悉隐式转换规则时。因此,在编写 JavaScript 代码时,需要对隐式转换进行充分的理解和考虑。同时,为了避免因类型转换造成的不必要的麻烦,例如在使用“==”或“!=”进行比较时,会进行隐式转换,应该尽可能的使用严格相等(“===”或“!==”)操作符进行比较。在编写代码时应尽量避免隐式转换,而是显式地进行类型转换。
二、理解js显式转换
在 JavaScript 中,显式转换是指通过代码的明确操作将一个数据类型转换为另一个数据类型。
序号 | 方法 | 解释 |
1 | parseInt() | 将字符串转换为数字 parseInt() 函数用于将整数字符串转换为整数 parseFloat() 函数用于将浮点数字符串转换为浮点数 如果无法转换,则返回 NaN。 |
2 | parseFloat() | |
3 | Number() | 将字符串、布尔值、undefined 和 null 转换为数字 |
4 | String() | 将数值、布尔值、对象、数组、null 和 undefined 转换为字符串 |
5 | Boolean()函数 | 将任何类型的值转换为布尔值。其中,只有 null、undefined、false、空字符串和数字 0 被转换为 false,其他所有值都被转换为 true |
6 | 操作符(+、-、*、/) | 将数值字符串和布尔值转换为数字 |
7 | Object()函数 | 将基本类型的数据转换为对应的对象类型。 |
显式转换在编程时非常常见,可以使程序更加明确和可读。但是要注意,如果显式转换不当,也可能会在程序运行时产生错误。因此,在进行显式转换时,要仔细考虑转换的类型和转换的方式,以避免潜在的错误。
三、理解js隐式操作
在 JavaScript 中,有很多隐式操作,这些操作是指在执行时自动发生,而不需要显示的操作(即不需要明确调用的操作)。
序号 | 方法 | 解释 |
1 | 隐式类型转换 | 在进行运算或比较时,JavaScript 会自动将不同类型的值转换成同一类型进行操作。例如,字符串和数字进行运算时,JavaScript 会将字符串转换成数字。 |
2 | 隐式原型链 | 当使用对象的属性时,如果该属性不在该对象的属性列表中,JavaScript 会沿着原型链向上查找该属性。这是一个自动发生的过程,称为隐式原型链。 |
3 | 隐式闭包 | 当一个函数内部引用了外部的变量时,JavaScript 会自动创建一个闭包。这个闭包会将被引用的变量保存在内存中,直到该闭包被销毁。 |
4 | 隐式对象创建 | 当使用对象字面量或 new 关键字创建对象时,JavaScript 会自动为该对象创建一个原型对象。 |
5 | 隐式函数调用 | 当使用函数调用时,如果函数的调用方式不是以对象方法的形式调用,那么调用的函数会成为全局对象的一个方法,此时 this 指向全局对象。 |
6 | 变量提升 | 在JavaScript中,变量和函数的声明会在代码执行前进行“提升”,即将声明提前执行,使得在声明之前就可以使用这些变量或函数。 |
7 | this关键字 | this关键字在不同的上下文中会有不同的值,例如在函数内部指向函数的执行上下文,而在对象方法中指向该对象。 |
8 | 隐式迭代 | JS中的数组和对象都可以进行迭代操作,例如使用for-in和for-of循环来遍历对象和数组。 |
9 | 隐式全局变量 | 如果在函数中没有使用var或let关键字,则会隐式创建一个全局变量。 |
10 | 隐式递归 | 某些函数会在函数内部调用自身来实现递归操作,这种递归操作是隐式的。 |
四、理解js显式操作
在 JavaScript 中,显式操作是指通过代码的明确操作来实现某种操作或实现某种行为。
序号 | 方法 | 解释 |
1 | 赋值操作符(=) | 将一个值赋给一个变量。 |
2 | 数学操作符(+、-、*、/、%) | 用于数学计算,例如将两个数字相加或相乘等。 |
3 | 比较操作符(>、<、>=、<=、==、!=) | 用于比较两个值的大小或相等性。 |
4 | 逻辑操作符(&&、||、!) | 用于逻辑计算,例如判断两个条件是否同时成立、或者取反一个值等。 |
5 | 条件操作符(?:) | 用于根据条件返回不同的值。 |
6 | 函数调用 | 使用函数名称和参数列表来调用一个函数。 |
通过显式操作,我们可以方便地控制程序运行的过程,实现我们想要的功能。同时,显式操作也常常被用来进行数据类型转换、类型检查等操作,进一步增强程序的健壮性和可维护性。
五、欢迎交流指正。
参考链接
JavaScript中的隐形转换
JS的隐式转换与显式转换_js隐式转换和显式转换_厉飞雨123的博客-CSDN博客
一文带你了解JavaScript的隐式类型转换_javascript隐式转换_ajaxsync的博客-CSDN博客
相关文章:
JavaScript:隐式转换、显示转换、隐式操作、显示操作
一、理解js隐式转换 JavaScript 中的隐式转换是指不需要显式地调用转换函数,而是在执行期间自动发生的数据类型的转换。即在使用不同类型的值进行操作时,JavaScript会自动进行类型转换。这种转换通常发生在不同数据类型之间进行运算或比较时。 序号分类…...
2023全新TwoNav开源网址导航系统源码 | 去授权版
2023全新TwoNav开源网址导航系统源码 已过授权 所有功能可用 测试环境:NginxPHP7.4MySQL5.6 一款开源的书签导航管理程序,界面简洁,安装简单,使用方便,基础功能免费。 TwoNav可帮助你将浏览器书签集中式管理&#…...
Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)
Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化) 在前面的文章中,我们分别介绍了Layout整体布局,以及StatusBar类的初始化.前者介绍了整体上面的布局,后者介绍了三大窗口的创建的入口处,以及需要做的准备工作.现在我们分别来细化三大窗口的UI创建和…...
华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型
9月13日-9月14日 Gartner全球应用创新及商业解决方案峰会在伦敦举行 本届峰会以“重塑软件交付,驱动业务价值”为主题,全球1000多位业内专家交流最新的企业应用、软件工程、解决方案架构、集成与自动化、API等企业IT战略和新兴技术热门话题。 9月13日…...
虚拟线上发布会带来颠覆性新体验,3D虚拟场景直播迸发品牌新动能
虚拟线上发布会是近年来在数字化营销领域备受关注的形式,而随着虚拟现实技术的不断进步,3D虚拟场景直播更成为了品牌宣传、推广的新选择。可以说,虚拟线上发布会正在以其颠覆性的新体验,为品牌带来全新的活力。 1.突破时空限制&am…...
Linux arm64 pte相关宏
文章目录 一、pte 和 pfn1.1 pte_pfn1.2 pfn_pte 二、其他宏参考资料 一、pte 和 pfn // linux-5.4.18/arch/arm64/include/asm/pgtable.h#define pte_pfn(pte) (__pte_to_phys(pte) >> PAGE_SHIFT) #define pfn_pte(pfn,prot) \__pte(__phys_to_pte_val((phys_addr_t)…...
MVCC:多版本并发控制案例分析(一)
(笔记总结自b站马士兵教育课程) 一、简介 MVCC:全称multi-version Concurency control,多版本并发控制,是为了解决并发读写问题存在的。MVCC的实现原理由三部分组成:隐藏字段、undolog、readview。 二、概…...
以数据为中心的安全市场快速增长
根据Adroit Market Research的数据,2021年全球以数据为中心的安全市场规模估计为27.6亿美元,预计到2030年将增长至393.48亿美元,2021年至2030年的复合年增长率为30.9%。 研究人员表示,以数据为中心的安全强调保护数据本身&#x…...
AUTOSAR汽车电子嵌入式编程精讲300篇-经典 AUTOSAR 安全防御能力的分析及改善(下)
目录 4.4.2 Security 攻击 4.4.3 Security 要求 4.4.4 SDSA 有效性验证 经典 AUTOSAR 安全防御能力分析...
AI绘图提示词Stable Diffusion Prompt 笔记
基础 提示词分为正向提示词(positive prompt)和反向提示词(negative prompt),用来告诉AI哪些需要,哪些不需要词缀的权重默认值都是1,从左到右依次减弱,权重会影响画面生成结果。AI …...
xml元素值需要保留space
XmlReaderSettings.IgnoreWhitespace 属性 如果忽略空白,则为 true;否则为 false。 默认值为 false。 示例 下面创建一个设置对象,该对象可用于构造一个读取器,该读取器去除处理指令、注释和微不足道的空白。 StreamReader tex…...
Eclipse开源代码下载
当前插件开发,需要修改eclipse源码,如需要修改remote相关的代码,所以需要下载相关源码。网上大多资料都说的不清不楚的,也可能我太小白,不明白,反正就是折腾了一两天才感觉有点思路,改如何找源码…...
python多线程、进程
1、 并行和并发 (1)并发:一定周期内,多个任务来回切换执行,宏观上形成“该周期内有多个任务在同时进行”;但同一时间点,只有一个任务在执行。 举例: 你想在2小时内同时完成做饭、扫…...
Vue基础之模板语法介绍
前言 上篇我分享了关于Vue的入门,简单的入了个门。本篇文章将要分享的内容为Vue的模板语法。 一、插值 1.1、文本 1.2、html 1.3、属性 1.4、class、style绑定 1.5、表达式 在Vue的模板语法中,插值是一种常用的方式来动态地将数据渲染到视图中。Vue使用双…...
【SLAM】 前端-视觉里程计之特征点
前端-视觉里程计之特征点 参考资料: 以不变应万变:前端-视觉里程计之特征点 视觉SLAM——特征点法 task05 本次了解了特征点是由关键子和描述子组成,并且对比了SIFT、SURF等七种获取特征点的方法,同时对比了SIFT、SURF和ORB方法…...
Android笔记(二十九):利用python自动生成多语言
背景 项目需要支持十几种多语言,而且每个版本的新功能ui都有很多地方需要多语言,如果手动添加非常耗时,于是设计了一个python脚本,通过excel表格转化多语言到项目values/strings文件内 步骤 android工程项目结构 脚本位于langu…...
【C++STL基础入门】list的运算符重载和关于list的算法
文章目录 前言一、list运算符1.1 逻辑运算符1.2 赋值运算符 二、list相关算法2.1 查找函数总结 前言 C标准模板库(STL)是一组强大而灵活的工具,用于处理数据结构和算法。其中,std::list是STL中的一个重要容器,它实现了…...
查找内轮廓(孔洞)
一 说明 findContours( InputOutputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode,int method, Point offset=Point());参数列表中有个数据结构参数:hierarchy(译层次结构),hierarchy是一个向量,其元素个数与查找到的轮廓总数相同,每一个…...
Git(6)——GitHub
目录 一、简介 二、概要 三、注册 四、创建仓库 五、推送本地代码 六、拉取远端代码 一、简介 在Git(5)中,我们已经对Git分支的概念和用法有了一定了解,对于在本地进行代码版本管理,其实当前所学的东西基本已经…...
【RocketMQ专题】快速实战及集群架构原理详解
目录 课程内容一、MQ简介基本介绍*作用(解决什么问题) 二、RocketMQ产品特点2.1 RocketMQ介绍2.2 RocketMQ特点2.3 RocketMQ的运行架构 三、RocketMQ快速实战3.1 快速搭建RocketMQ服务3.2 快速实现消息收发3.3 搭建Maven客户端项目3.4 搭建RocketMQ可视化…...
[设计模式] 浅谈SOLID设计原则
目录 单一职责原则开闭原则里氏替换原则接口隔离原则依赖倒转原则 SOLID是一个缩写词,代表以下五种设计原则 单一职责原则 Single Responsibility Principle, SRP开闭原则 Open-Closed Principle, OCP里氏替换原则 Liskov Substitution Principle, LSP接口隔离原则 …...
基于Java+SpringBoot+Vue的旧物置换网站设计和实现
基于JavaSpringBootVue的旧物置换网站设计和实现 源码传送入口前言主要技术系统设计功能截图数据库设计代码论文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 摘 要 随着时代在一步一步在进步,旧物也成人们的烦恼,…...
Java基本语法2
目录 Java基本语法 第一个Java程序 基本语法 Java标识符 Java修饰符 Java变量 Java数组 Java枚举 Java关键字 Java注释 Java 空行 继承 接口 Java基本语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介…...
【数据结构】树的存储结构;树的遍历;哈夫曼树;并查集
欢~迎~光~临~^_^ 目录 1、树的存储结构 1.1双亲表示法 1.2孩子表示法 1.3孩子兄弟表示法 2、树与二叉树的转换 3、树和森林的遍历 3.1树的遍历 3.1.1先根遍历 3.1.2后根遍历 3.2森林的遍历 3.2.1先序遍历森林 3.2.2中序遍历森林 4、树与二叉树的应用 4.1哈夫曼树…...
CSS选择器练习小游戏
请结合CSS选择器练习小游戏进行阅读(网页的动态效果是没有办法通过静态图片展示的) 网址:请点击 有些题有多种答案,本文就不一一列出了 第一题 答案:plate第二题 答案:bento第三题 答案:#fa…...
Python运算符、函数与模块和程序控制结构
给我家憨憨写的python教程 ——雁丘 Python运算符、函数与模块和程序控制结构 关于本专栏一 运算符1.1 位运算符1.1.1 按位取反1.1.2 按位与1.1.3 按位或1.1.4 按位异或1.1.5 左移位 1.2 关系运算符1.3 运算顺序1.4 运算方向 二 函数与模块2.1 内建函数2.2 库函数2.2.1 标准库…...
微服务保护-Sentinel
初识Sentinel 雪崩问题及解决方案 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时&a…...
Doris 导出表结构或数据
MYSQLDUMP 导出表结构或数据 Doris 在0.15 之后的版本已经支持通过mysqldump 工具导出数据或者表结构 使用示例 导出 导出 test 数据库中的 table1 表:mysqldump -h127.0.0.1 -P9030 -uroot --no-tablespaces --databases test --tables table1导出 test 数…...
SELECT * from t_user where user_id = xxx,可以从那几个点去优化这句sql
优化SQL查询可以从以下几个方面入手: 1. 索引优化:通过为查询涉及的列添加合适的索引,可以提高查询的效率。在该SQL语句中, user_id 列被用作查询条件,可以为 user_id 列创建一个索引。 2. 避免使用 SELECT *…...
解决报错 java.lang.IllegalArgumentException: Cannot format given Object as a Date
报错原因:我们在SimpleDateFormat.format转化时间格式的时候,传入的值无法转换成date而报的错 我的代码大概就是下面这种 LocalDate now LocalDate.now();String format1 new SimpleDateFormat("yyyy-MM-dd").format(now); 发现SimpleDateF…...
做网站和做微信小程序/企业网站建设要多少钱
使用C#调用外部Ping命令获取网络连接情况 以前在玩Windows 98的时候,几台电脑连起来,需要测试网络连接是否正常,经常用的一个命令就是Ping.exe。感觉相当实用。 现在 .net为我们提供了强大的功能来调用外部工具,并通过重定向输入、…...
医院招聘网站建设和维护人员/seo诊断方案
文章目录1.常见的集合有哪些2.List 、Set和Map 的区别3.ArrayList4.ArrayList的扩容机制5.怎么在遍历 ArrayList 时移除一个元素6.Arraylist 和 Vector 的区别7.Arraylist 与 LinkedList 区别8.HashMap9.HashMap扩容过程10.红黑树的特点11.为什么使用红黑树而不使用AVL树12.在解…...
做网站必须买云虚拟主机吗/免费建网站哪家好
板级设计技术以可编程逻辑器件(PLD、FPGA以及SoPC)设计和PCB设计为基础。 为了配合《PCB设计工具,你选对了吗?》特别报道,e-works做了一系列调查采访,本文是关于国内外各大公司的板级设计软件的应用案例&am…...
做投注网站多少钱/seo推广怎么入门
又来写反思了。 这次考试又处在一个放假(之后)的尴尬位置,说实话有点困(虽然中午确实没夜聊),暴力了80,连大众分也没拿到,很伤。 一开始还是先溜一眼三道题,发现T1有点眼…...
网站模板安装出现预先建设数据库/百度认证证书
本篇文章给大家带来的内容是关于Thinkphp5对接百度云对象存储 BOS(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。首先下载SDK包可以在 官网下载 ,或者在项目根目录使用composer 。composer require ba…...
在线设计logo图案免费/seo网络优化教程
# SQL拼接小技巧(一) # 2018/6/21 18:54:36 ---------- **关键字: SQL , 1 1 ,1 2** ---------- 如下代码中SQL拼接使用了11和12防止请求参数中条件为空或SQL注入的方式猜测表名,字段名 public DomainPage<…...