JavaScript基础——数据类型转换

显示数据类型转换

String()函数进行显示转换

Number()函数进行显示转换

Boolean()函数进行显示转换

隐式数据类型转换

算术运算隐式转化

比较操作隐式转化

赋值操作


        在JavaScript中,数据类型转换是常见的操作,它允许将一种类型的数据转换为另一种类型。数据类型转换可以分为两种类型:隐式类型转换(也称为类型强制或类型合)和显式类型转换。

显示数据类型转换

        显式类型转换是由明确调用函数或方法来实现的,转换的意图是明确的

String()函数进行显示转换

        String()是一个JavaScript内置的构造函数,用于将任何类型的值转换为字符串。语法如下:

let str = String(需要转换的字符); 

        利用String()函数将布尔值和数字转换为字符串,并用typeof语句查看数据类型,可以发现转换后的数据类型为string。

        完整代码:

    <script>// 1) 转字符串console.log(typeof true);// 'boolean'console.log(typeof 100);// 'number'console.log(typeof String(100));// 'string'console.log(typeof String(true));// 'string'</script>

Number()函数进行显示转换

      Number()是JavaScript中的一个内置构造函数,它用于将任何类型的值转换为数字。语法如下:

let num = Number(需要转换的数字); 

        注意:利用Number()将字符串转为数字是不可行的,会输出NaN(not a number),意思是非数字,特殊的数值,但是数据类型也是number,因为已经进行了数据类型的转换。

        将指定的数据转换为number类型,并用typeof语句检测转换前后的数据类型,结果如下: 

 

        如果对布尔值进行转换,真值true会转换为1,假值false转换为0,数据类型均为number。

        同理,空值(空字符串、null等)的布尔值为false,转换为数字类型,结果是0,undefined缺少值转换为数字类型,结果是NaN,但数据类型均为number。

        逻辑运算的结果为真或假,也就是1或0,转换为数字类型也是同理。任何与逻辑运算相关的,都可以归纳为true和false,true对应1,false对应0。

        完整代码如下:

    <script>// 2)转数字类型console.log(typeof "abc");// 'string'console.log(Number("abc"));// NaN   (not a number) 非数字 特殊的数值。console.log(typeof Number("abc"));// 'number'console.log(typeof "100");// 'string'console.log(Number("100"));// 100console.log(typeof Number("100"));// 'number'console.log(typeof true);// 'boolean'console.log(typeof true);// 'boolean'console.log(typeof Number(true));// 'number'console.log(typeof Number(true));// 'number'console.log(Number("")); // 0console.log(Number(undefined)); // 0console.log(Number(null)); // 0console.log(typeof ""); // stringconsole.log(typeof true); // booleanconsole.log(typeof false); // booleanconsole.log(typeof Number("")); // numberconsole.log(typeof Number(null)); // numberconsole.log(typeof Number(undefined)); // numberconsole.log(typeof Number(true)); // numberconsole.log(typeof Number(false)); // numberconsole.log(Number(true)); // 1console.log(Number(false)); // 0console.log(Number("")); // 0console.log(Number(null)); // 0console.log(Number(undefined)); // NaNconsole.log(Number(1 > 2)); // 0console.log(Number(1 < 2)); // 1console.log(typeof Number(1 > 2)); // numberconsole.log(typeof Number(1 < 2)); // number     </script>

Boolean()函数进行显示转换

        Boolean()是JavaScript中的一个内置构造函数,用于将任何类型的值转换为布尔值。语法如下:

let flag = Boolean(需要转换的字符); 

        在JavaScript中,将不同类型的值转换为布尔值时,非空字符串和所有非零数字(包括正数、负数和NaN以外的特殊值)都会转换为true,而空字符串、数字0、-0、NaN、null和undefined则会转换为false。

        完整代码:

    <script>// 2)转数字类型console.log(Boolean("abc")) // trueconsole.log(Boolean(12)) // trueconsole.log(Boolean([1, 2])) // trueconsole.log(Boolean({ k: 2 })) // trueconsole.log(Boolean(0)); // falseconsole.log(Boolean(1 > 2)) // falseconsole.log(Boolean("")); // falseconsole.log(Boolean(null)); // falseconsole.log(Boolean(undefined)); // falseconsole.log(Boolean(NaN)); // false</script>

隐式数据类型转换

        隐式类型转换发生在JavaScript解释器在执行代码时自动将一种类型的值转换为另一种类型,而不需要者显式地指定。 

算术运算隐式转化

        任意数据类型和字符串拼接,都会变成字符串类型,利用“+”号连接的两个数据,一个为字符串,+"字符串",得到的数据就是字符串类型。

 

        完整代码:

    <script>// 任意数据类型和字符串拼接,都会变成字符串类型console.log(typeof 10);// 'number'console.log(typeof (10 + "abc"));// 'string'console.log(typeof true);//'boolean'console.log(typeof (true + ""));//'string'console.log(typeof (undefined + ""));//'string'</script>

        使用“-0”可以隐式转换成数字类型,任何数字减去0都等于其本身。

        完整代码如下:

    <script>// 使用“-”可以隐式转换成数字类型// 任何数字减去0都等于其本身console.log(100 - 60);// 40console.log(typeof "100");// 'string'console.log(typeof ("100" - 0));// 'number'</script>

        使用“*1”可以隐式转换成数字类型,任何数字乘以1都等于其本身。

        完整代码如下:

    <script>// 任何数字乘以1都等于其本身console.log(typeof "100");// 'string'console.log(typeof ("100" * 1));// 'number'</script>

比较操作隐式转化

        在进行比较时,不同类型的值会被转换成布尔值或数字,以便进行比较。例如,"0" == 0 的结果是 true,因为字符串"0"被转换成了数字0

        完整代码:

    <script>// 字符串与数字的比较console.log("0" == 0); // true,因为字符串 "0" 被转换成数字 0// 布尔值与数字的比较console.log(true == 1); // true,因为布尔 true 被转换成数字 1console.log(false == 0); // true,因为布尔 false 被转换成数字 0// 对象与原始类型的比较let obj = new String("100");console.log(obj == 100); // true,因为对象 obj 被转换成字符串 "100",然后 "100" 被转换成数字 100// null 和 undefined 的比较console.log(null == undefined); // true,null 和 undefined 是相等的console.log(null == 0); // false,null 和 0 是不相等的// NaN 的比较console.log(0 / 0 == 0 / 0); // false,因为 NaN 与任何值(包括自身)比较都返回 false// 空值和非空值的比较console.log("" == false); // true,空字符串被转换成数字 0,与 false(转换成数字 0)相等console.log(" " == false); // false,非空字符串被转换成数字,与 false 不相等</script>

        假设有多个比较运算时,会将结果转换为0或1,再继续比较。        

        假设需要比较1>2<3,程序首先会先比较1>2,结果为假,所以值为0,然后比较0<3,是真,所以输出true。        

        比较1<2>3,程序首先会先比较1<2,结果为真,所以值为1,然后比较1>3,是假,所以输出false。        

赋值操作

        在JavaScript中,赋值操作使用单个等号=来执行。赋值时,赋值的值(称为源值)通常会被转换成与目标变量的类型一致的值。

  

        完整代码如下:

    <script>let num; // 声明一个变量,未初始化// 将字符串赋值给num,隐式转换为数字num = "123"; // num 现在是数字 123// 将布尔值赋值给num,隐式转换为数字num = true; // num 现在是数字 1console.log(num);// 将对象赋值给字符串变量let str;str = new String("Hello"); // str 现在是字符串 "Hello"console.log(str);// 将数字赋值给布尔值变量,隐式转换为布尔值let bool;bool = 0; // bool 现在是 false,因为 0 被转换成 falseconsole.log(bool);bool = 1; // bool 现在是 true,因为 1 被转换成 trueconsole.log(bool);// 将null赋值给任何变量let obj;obj = null; // obj 现在是 nullconsole.log(obj);// 将undefined赋值给任何变量let undef;undef = undefined; // undef 现在是 undefinedconsole.log(undef);</script>

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

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

相关文章

立项技术路线选择

本章主要是简单聊聊技术路线&#xff0c;额涉及unity和虚幻&#xff0c;目的主要是给自己看的&#xff0c;记录下日期&#xff1a;2024.8.4 在今天&#xff0c;除游戏以外的厂商基本上采用c#的混合技术方案 如果需要的设备对象多。效果不需要极为精细&#xff0c;至少unity是绝…

(自用)MyLog 简单日志 .net6.0 等

appsettings.json {"LogOnOff": true //true 开启日志&#xff1b;false 关闭日志 } MyLog.cs using System.ComponentModel;namespace Namespace {/// <summary>/// 日志类型 枚举/// </summary>public enum LogType{[Description("调试日志&q…

【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现

【2024 年华数杯全国大学生数学建模竞赛】C题&#xff1a;老外游中国 问题思路分析及Python代码实现 1 题目 最近&#xff0c;“city 不 city”这一网络流行语在外国网红的推动下备受关注。随着我国过境免签政策的落实&#xff0c;越来越多外国游客来到中国&#xff0c;通过网…

MS1112驱动开发(iio框架)

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

【Java】深度解析Java的反射机制

反射&#xff08;Reflection&#xff09; 一、 反射的基本概念二、 获取类的信息三、 获取类的成员四、 动态创建对象五、 动态调用方法六、 动态访问和修改字段 总结 一、 反射的基本概念 反射是一种运行时机制&#xff0c;允许程序在运行时检查和操作类、方法、字段等。通过…

JavaFX布局-TabPane

JavaFX布局-TabPane 常用属性paddingsidetabClosingPolicytabDragPolicy 实现方式Java实现fxml实现 组织一组tab的容器&#xff0c;可以设置关闭&#xff0c;拖拽等每个tab内容可以设置不同容器数据 常用属性 padding 内边距&#xff0c;可以单独设置上、下、左、右的内边距 …

docker部署java项目(war包方式)

场景描述:java项目war包,在开发开电脑上使用dockerfile构建镜像,上传镜像到客户服务器中使用docker加载docker镜像,然后部署。 目录 一、本地环境安装 docker git 二、服务器环境安装 docker 三、构建docker镜像(win系统) 四、注意事项 (1)系统架构 (2)使…

如何准备专利申请书的摘要部分?

如何准备专利申请书的摘要部分&#xff1f;

【EI会议征稿通知】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

重要信息 会议官网&#xff1a;www.icbase.org&#xff08;查看详情&#xff09; 中文主页&#xff1a;【往届会后3个月检索】第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;_艾思科蓝_学术一站式服务平台 会议时间&#xff1a;2024年9月2…

C++笔记---类和对象(中)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。 一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;分别为&#xff1a;构造函数&#xff0c;析构函数&#xff0c;拷贝构…

C#中的Winform基础

program 每个Windows应用程序都会有一个Program类——程序入口点 [STAThread] ----指示应用程序的COM线程模型是单线程单元&#xff08;如果无此特性&#xff0c;无法工作&#xff09; static voidMain() —— 入口 System.Windows.Forms.Application类提供一系列静态方法和…

Bootstrap框架介绍

1、Bootstrap框架的下载和使用 Bootstrap框架是基于HTML、CSS、JavaScript的CCS/HTML框架,是一种封装好的前端框架。它包括js、css、front字体样式库。该框架下载链接:https://v3.bootcss.com/getting-started/#download,并选择下载源码。 建一个BootstrapDemo文件夹,将js…

GoAccess实战秘籍:从新手到高手,跨越那些“坑”与“惑”!

GoAccess实战秘籍:从新手到高手,跨越那些“坑”与“惑”! 致读者: 点击上方 “雪之梦技术驿站” → 点击右上角“ … ”→ 点选“设为星标★ ” 加上星标,就不会找不到我啦! 偷偷溜进文章的小广告,别害羞,点进去瞅瞅,说不定能发现什么宝藏呢!文末那个也别错过,说不定…

鼻咽癌综述

小罗碎碎念 本期推文主题&#xff1a;鼻咽癌综述 这篇文章提供了一个全面的综述&#xff0c;探讨了鼻咽癌&#xff08;NPC&#xff09;的关键研究进展&#xff0c;包括病理机制、治疗、筛查和生物标志物的发展。 文章首先强调了NPC在特定地理区域的流行情况&#xff0c;并讨论了…

nginx反向代理和负载均衡+安装jdk-22.0.2

ps -aux|grep nginx //查看进程 nginx 代理 nginx代理是负载均衡的基础 主机&#xff1a;192.168.118.60 这台主机只发布了web服务&#xff0c;没有做代理的任何操作 修改一下index.html中的内容 echo "this is java web server" > /usr/local/nginx/htm…

Java游戏源码:象棋网络对战版

学习java朋友们&#xff0c;福利来了&#xff0c;今天小编给大家带来了一款象棋网络对战版源码。 源码搭建和讲解 源码分为客户端和服务器&#xff0c;采用java原生 java.net.Socket 实现&#xff0c;服务器主循环代码&#xff1a; import java.net.ServerSocket; import jav…

【吊打面试官系列-Dubbo面试题】Dubbo 配置文件是如何加载到 Spring 中的 ?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo 配置文件是如何加载到 Spring 中的 &#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo 配置文件是如何加载到 Spring 中的 &#xff1f; Spring 容器在启动的时候&#xff0c;会读取到 Spring 默认的一些…

nodejs多版本随心切换-windows

nodejs多版本控制 1. 安装 nvm github下载地址 不需要卸载已安装的nodejs&#xff0c;安装时会让你选择nodejs的位置&#xff0c;可修改为你已经安装的路径&#xff0c;会自动搜索已安装版本&#xff0c;并进行弹窗询问&#xff0c;选择托管即可 2. 修改配置文件 在 nvm 安装…

案例分享|Alluxio在自动驾驶数据闭环中的应用

分享嘉宾&#xff1a; 孙涛 - 中汽创智智驾工具链数据平台开发专家 关于中汽创智&#xff1a; 中汽创智科技有限公司&#xff08;以下简称“中汽创智”&#xff09;由中国一汽、东风公司、南方工业集团、长安汽车和南京江宁经开科技共同出资设立。聚焦智能底盘、新能动力、智…

K8S可视化管理平台KubeSphere

什么是 KubeSphere &#xff1f; KubeSphere 是一款开源项目&#xff0c;在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台&#xff0c;提供简单易用的操作界面以及向导式操作方式&#xff0c;在降低用户使用容器调度平台学习成本的同时&#xff…