当前位置: 首页 > news >正文

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>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 测试面试宝典(四十七)— 功能测试用例一般包含哪些内容
  • 【Python机器学习】支持向量机——SMO高效优化算法
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 团队关系判定(100分) - 三语言AC题解(Python/Java/Cpp)
  • 程序员面试“八股文”:助力成长还是应试枷锁?
  • ps基础操作1
  • 【c++】自定义函数Rounding (余归函数)
  • 学生管理系统之界面设计
  • python 学习: np.pad
  • 安装pytorch GPU方法
  • C#对象和类型
  • 每日一题——贪心算法
  • 设计模式:模板方法模式:封装不变,扩展可变
  • 使用 Python 对雷达卫星 sar 图像进行降噪的三种方法
  • 使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起
  • Scrapy框架在处理大规模数据抓取时有哪些优化技巧?
  • 《深入 React 技术栈》
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Angular数据绑定机制
  • Fastjson的基本使用方法大全
  • Logstash 参考指南(目录)
  • Puppeteer:浏览器控制器
  • quasar-framework cnodejs社区
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • windows下mongoDB的环境配置
  • 订阅Forge Viewer所有的事件
  • 驱动程序原理
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 少走弯路,给Java 1~5 年程序员的建议
  • 我这样减少了26.5M Java内存!
  • 应用生命周期终极 DevOps 工具包
  • HanLP分词命名实体提取详解
  • 阿里云移动端播放器高级功能介绍
  • 第二十章:异步和文件I/O.(二十三)
  • #微信小程序(布局、渲染层基础知识)
  • $L^p$ 调和函数恒为零
  • (04)odoo视图操作
  • (1)虚拟机的安装与使用,linux系统安装
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (独孤九剑)--文件系统
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (南京观海微电子)——I3C协议介绍
  • (三) diretfbrc详解
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)Google的Objective-C编码规范
  • (转)人的集合论——移山之道
  • . Flume面试题
  • .apk 成为历史!
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core webapi 大文件上传到wwwroot文件夹