JavaScript强制类型转换

强制类型转换:

强制类型转换:指将其他的数据类型转换为string、number、boolean

将其他数据类型转换为字符串String():

方法一:

- 可以通过调用被转换值的toString()方法来将其转换为字符串

- 调用xxx的yyy方法 --> xxx.yyy()

- 转换的原理:实际上根据原来的值创建出一个新值

- toString()只是根据原来的值,创建一个新的字符串并返回,

不会改变原来的值

- 要改变变量中存储的值,必须要对变量进行重新赋值

- 注意:由于在null和undefined中,不存在toString()方法,

所以如果对null和undefined调用toString()会报错

方法二:

- 可以通过调用String()函数,来将其他类型的值转换为字符串

- 调用xxx函数,--> xxx()

- String()的原理:

对于具有toString()方法的值来说,String()会直接调用它们的

toString()来将其转换为字符串

对于没有toString()方法的null和undefined来说,

null 会直接 转换为 'null'

undefined 会直接 转换为 'undefined'

方法二函数方法更加实用,建议实用String()函数方法!

var a = 123; // 123 --> '123'

a = a.toString(); // 调用a的toString()来将其转换为字符串

// a = NaN;

// a = undefined; // 'undefined'

// a = true; // 'true'

// a = null;

// console.log(a, typeof a);

// a = a.toString();

// console.log(a, typeof a);

var b = false; // 'false'

b = null; // "null"

b = undefined; // "undefined"

console.log(b, typeof b);

//调用String()函数来将b转换为字符串

b = String(b);

console.log(b, typeof b);

其他的数据类型,转换为数值(Number)

方式一:使用Number()函数来将其他类型转换为数字

- 转换的情况:

string -> number

- 如果字符串是一个合法的数字,则直接转换为对应的数字

'123' --> 123

'123.45' --> 123.45

- 如果字符串是一个非法的数字,则会转换为NaN

'abc' --> NaN

'123.45.46' --> NaN

'100px' --> NaN

- 空串和纯空格组成的字符串,会转换为0

“ '' --> 0

' ' --> 0

boolean -> number

true --> 1

false --> 0

在JS底层,true就是用1来表示的,false就是用0来表示的

null -> number

null --> 0

undefined -> number

undefined --> NaN

var a = '123'; //123

a = 'abc';

a = '123.45';

a = '123.45.46';

a = '100px';

a = ''; // 空串

a = ' ';

a = 'Infinity'; // Infinity

a = true; //1

a = false; //0

a = null; // 0

a = undefined; // NaN

console.log(a, typeof a);

a = Number(a);

console.log(a, typeof a);

方式二:JS专门为我们提供了两个函数,用来将字符串转换为数字

parseInt()

- 将一个字符串转换为一个整数

paresFloat()

- 将一个字符串转换为一个浮点数

- 原理:

- 使用parseXxx()转换一个字符串时,

它们会自左向右依次读取字符串中的内容,

会把字符串中的合法数字提取出来,然后将其转换为数值

parseInt() 只获取合法的整数位

parseFloat() 获取合法的小数位

var a = '10px';

a = '100px12312423445';

a = '123.456.678';

console.log(a, typeof a);// '123.456.678’ string

// a = parseInt(a);

a = parseFloat(a);

console.log(a, typeof a);//123.456 number

方式三使用>>>转换:

let a = '1';

a = a >>> 0

console.log(a, typeof a); // 1 number

在 JavaScript 中,

>>> 是无符号右移运算符,它可以将运算符左边的数字向右移动运算符右边的数字位数,并使用 0 填充左侧空余的位数。无符号右移运算符会把操作数看作是无符号数,因此不管操作数的符号,移动后在最高位补上的都是 0。

当对一个字符串使用无符号右移运算符时,JavaScript 引擎首先将该字符串(如 ‘1’)转换为对应的数字(如 1),然后执行无符号右移位运算。这里的转换涉及到了类型转换。在上述代码中,a = a >>> 0 实际上就是将字符串 ‘1’ 转换为数字 1,再执行 1 >>> 0 操作,返回结果还是 1。

需要注意的是,位运算符在 JavaScript 中有符号和无符号之分,有些位运算符在没有必要时会先将操作数转换为数字类型再进行运算,因此需要谨慎使用。

将其他的数据类型转换为布尔值:

方式一: - 使用Boolean()函数

转换的情况:

- 数值:

除了0和NaN,其他值都会转换为true

- 字符串:

除了空串,其他值都会转换为true

- null和undefined和NaN都会转换为false

- 大部分对象都会转换为true

var a = 100; // true

a = -100; // true

a = Infinity; // true

a = NaN; // false

a = 0; // false

a = 'hello'; // true

a = 'false'; // true

a = ''; // false

a = ' '; // true

a = null; // false

a = undefined; // false

console.log(a, typeof a);

a = Boolean(a);

console.log(a, typeof a);

欢迎关注我的原创文章:小伙伴们!我是一名热衷于前端开发的作者,致力于分享我的知识和经验,帮助其他学习前端的小伙伴们。在我的文章中,你将会找到大量关于前端开发的精彩内容。

学习前端技术是现代互联网时代中非常重要的一项技能。无论你是想成为一名专业的前端工程师,还是仅仅对前端开发感兴趣,我的文章将能为你提供宝贵的指导和知识。

在我的文章中,你将会学到如何使用HTML、CSS和JavaScript创建精美的网页。我将深入讲解每个语言的基础知识,并提供一些实用技巧和最佳实践。无论你是初学者还是有一定经验的开发者,我的文章都能够满足你的学习需求。

此外,我还会分享一些关于前端开发的最新动态和行业趋势。互联网技术在不断发展,新的框架和工具层出不穷。通过我的文章,你将会了解到最新的前端技术趋势,并了解如何应对这些变化。

我深知学习前端不易,因此我将尽力以简洁明了的方式解释复杂的概念,并提供一些易于理解的实例和案例。我希望我的文章能够帮助你更快地理解前端开发,并提升你的技能。

如果你想了解更多关于前端开发的内容,不妨关注我的原创文章。我会不定期更新,为你带来最新的前端技术和知识。感谢你的关注和支持,我们一起探讨交流技术共同进步,期待与你一同探索前端开发的奇妙世界!

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

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

相关文章

debian12 最小化安装桌面 i3wm

怕记不住,先临时记录一下,还未整理,先凑合着看 debian12 最小安装 i3wm 一、先安装 debian12 最小安装 软件包只选择最后的两个 SSH服务,和管理工具 安装后查看IP,并用另一台电脑 ssh 连接操作,这样比较…

Android WebView 响应缓存 笔记

Android WebView 响应缓存 在 Android开发中,经常用到 WebView 进行 Hybrid 模式开发,而 缓存是 常见的优化方式。 一、WebView 缓存模式 Android WebView 通过 WebSettings.setCacheMode 设置缓存方式。 有 5 种模式,实际现在 4 种&#…

教你用JMeter做接口测试的几个简单实例

前言 这次小项目是基于HTTP协议的接口,通过JMeter来完成一次基本的接口测试,完整复习一下JMeter的基本操作。 在实际项目中,测试也要先从开发那拿到接口说明书,分析熟悉业务后,写接口的测试用例,最后再在…

Java毕业设计—vue+SpringBoot调查问卷管理系统

研究目的 在进入21世纪以后,互联网得到了蓬勃的发展,电子问卷调查也开始逐渐流行起来。传统纸质问卷和电子问卷相比较后,传统问卷还存在很多弊端: 问卷分发起来比较困难,并且分发试卷耗费大量的金钱和时间&#xff1…

2024年金科《数字媒体技术》专业参考书目及考试大纲

《计算机网络基础》考试大纲 一、参考书目: 《计算机网络技术与应用(第 2 版)》,段标、张玲主编,电子工业出版社. 二、考试形式: 闭卷,考试时间 90 分钟 三、考试内容和要求 (一…

Visual Studio(VS)常用快捷键(最详细)

Visual Studio常用快捷键 一、生成:常用快捷键二、调式:常用快捷键三、编辑:常用快捷键四、文件:常用快捷键五、项目:常用快捷键六、重构:常用快捷键七、工具:常用快捷键八、视图:常…

Echarts多图表动态更新示例

前端框架(html、echarts、jquery) <!DOCTYPE html> <html><head><meta charset"utf-8"><title>echarts多图表动态更新示例</title><script src"jquery.min.js"></script><script type"text/java…

强大的TFTP工具:Transfer免激活最新版

Transfer for Mac功能介绍 从头开始编写的Transfer可以完全控制您的文件传输&#xff0c;同时可以与现有的TFTP客户端完美兼容。Transfer附带对常见TFTP协议扩展和选项的支持&#xff0c;包括&#xff1a; RFC 2347-TFTP选项扩展 RFC 2348-TFTP块大小选项 RFC 2349-TFTP超时…

SystemUI下拉通知菜单栏定时自动隐藏

前言 在系统应用开发过程中&#xff0c;常常遇到一些特殊的需求&#xff0c;Android原生的应用并无此适配&#xff0c;此时需要对系统应用进行定制化开发。 目前遇到的这样一个需求&#xff1a;下拉通知菜单栏时&#xff0c;定时8秒后自动关闭通知菜单栏。通知菜单栏为Sytstem…

Python面经【11】- Python可迭代对象一网打尽专题

Python面经【11】- Python可迭代对象一网打尽专题 可迭代对象Python的迭代器、生成器1) 迭代器2) 生成器 可迭代对象、迭代器的区别12. 生成器、迭代器的区别什么是装饰器&#xff1f;函数装饰器有什么作用一句话解释什么样的语言能够使用装饰器Python中的作用域&#xff1f;什…

自卑与自信,自爱的人最幸福

自信与自卑的区别&#xff0c;重要的一点是评价机制的差异 自信的人对自己有一个整体的评价&#xff0c;他们运用内在的评价机制&#xff0c;他们习惯从自己身上找原因&#xff0c;尊重自己内在的感觉&#xff0c;按照自己的直觉行事。也就是说&#xff0c;不管别人如何评价&am…

Linux CentOS7 Docker安装Jenkins

1 sudo yum update #确保yum包更新到最新 service network restart #重启网络 2、查询镜像 docker search jenkins 3、拉取镜像 docker pull jenkins/jenkins #拉取镜像 4、创建Jenkins工作目录&#xff0c;并将容器内目录挂载到此目录…

远程服务器——如何在Conda中安装R环境

目录 1. R的安装2. VScode 配置参考文献 1. R的安装 推荐使用anaconda或者miniconda&#xff0c;创建虚拟环R_env境然后安装R&#xff1b; 使用conda search r-base查看可下载的R的版本&#xff1b;R版本比较低&#xff0c;一般可以先增加源&#xff1a; % 增加源 conda con…

垂直领域大模型算法团队招聘AIGC算法工程师(社招/实习)

base 北京 根据实习表现有转正名额&#xff0c;目前实习HC比较宽松&#xff0c;社招有HC但审批不太容易。 联系方式&#xff1a;leayc 艾特 hotmail.com 请标题注明【CSDN求职】并附简历 【职责】 负责领域大模型的继续预训练&#xff08;pre-training&#xff09;、微调对齐…

计算机视觉技术在智慧城市建设中的应用

计算机视觉技术在智慧城市建设中的应用 随着城市化进程的不断推进&#xff0c;更多的人们选择在城市生活、工作和娱乐。面对快速增长的人口和日益复杂的城市环境&#xff0c;很多城市开始探索智慧城市的建设。智慧城市的核心就是将现代信息技术应用于城市管理中&#xff0c;以…

阿里云语音转文本

import requests from http import HTTPStatus import dashscope from dashscope.audio.asr import Recognitiondashscope.api_key你的keyrecognition Recognition(modelparaformer-realtime-v1,formatwav,sample_rate16000,callbackNone) result recognition.call(output.wa…

基于YOLOv8深度学习的西红柿成熟度检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

07用户行为日志数据采集

用户行为数据由Flume从Kafka直接同步到HDFS&#xff0c;由于离线数仓采用Hive的分区表按天统计&#xff0c;所以目标路径要包含一层日期。具体数据流向如下图所示。 按照规划&#xff0c;该Flume需将Kafka中topic_log的数据发往HDFS。并且对每天产生的用户行为日志进行区分&am…

Python高级算法——遗传算法(Genetic Algorithm)

Python中的遗传算法&#xff08;Genetic Algorithm&#xff09;&#xff1a;高级算法解析 遗传算法是一种启发式搜索算法&#xff0c;模拟自然选择和遗传机制&#xff0c;用于在解空间中寻找优化问题的解。它通过模拟基因的变异、交叉和选择操作&#xff0c;逐代演化产生新的解…

【Android】DeepLink

官方文档&#xff1a;创建指向应用内容的深层链接 Intro to Deep Linking on Android What is Deep linking? Deeplinks are a concept that help users navigate between the web and applications. They are basically URLs which navigate users directly to the specif…