首页 > 其他分享 >46. JS类型转换(强制类型转换+隐式类型转换)

46. JS类型转换(强制类型转换+隐式类型转换)

时间:2022-10-13 15:12:02浏览次数:62  
标签:类型转换 输出 46 JavaScript write 字符串 document 隐式

1. 前言

JavaScript  中有五种基本数据类型(其中包括 String、Number、Boolean、Function、Symbol)、三种对象类型(其中包括 Object、Date、Array)和两种特殊类型(其中包括 Null、Undefined)。不同的类型之间运算需要先对数据的类型进行转换,类型转换是将一种数据类型转换为另一种数据类型的过程,在日常开发中,我们会经常用到。

在 JavaScript 有两种类型转换的方式,分别是隐式类型转换和强制类型转换(也叫显式类型转换)。

2. JS 隐式类型转换

隐式转换就是自动转换,通常发生在一些数学运算中。因为 JavaScript 是一种弱类型的语言,在一个表达式中,运算符两边的类型可以不同(比如一个字符串和一个数字相加),JavaScript 解释器会在运算之前将它们的类型进行转换,如下所示:

var str = "http://c.biancheng.net/";
var num = 123;
var res = str + num;
document.write(typeof res);  // 输出:string
document.write(res);         // 输出:http://c.biancheng.net/123

通过运行结果可以看出,将一个字符串与一个数字相加,会得到一个字符串类型的值。如果是在 C语言或者 Java 语言中的话,上面的运算会因为运算符两边的数据类型不一致而导致报错,但在 JavaScript 中则不会,因为在运算之前 JavaScript 解释器会将上面的 num 变量隐式的转换为字符串类型,之后再进行运算。

JavaScript 中,表达式中包含以下运算符时,会发生隐式类型转换:

  • 算术运算符:加(+)、减(-)、乘(*)、除(/)、取模(%);
  • 逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!);
  • 字符串运算符:+、+=。


示例代码如下:

document.write("3" - 2);           // 输出:1
document.write("3" + 2);           // 输出:"32"
document.write(3 + "2");           // 输出:"32"
document.write("3" * "2");         // 输出:6
document.write("10" / "2");        // 输出:5
document.write(1 + true);          // 输出:2
document.write(1 + false);         // 输出:1
document.write(1 + undefined);     // 输出:NaN
document.write(3 + null);          // 输出:3
document.write("3" + null);        // 输出:"3null"
document.write(true + null);       // 输出:1
document.write(true + undefined);  // 输出:NaN

通过运行结果可以得出:

  • 字符串加数字,数字会转换为字符串;
  • 数字减字符串,字符串会转换为数字,如果字符串无法转换为数字(例如"abc"、"JavaScript"),则会转换为 NaN;
  • 字符串减数字,字符串会转换为数字,如果字符串无法转换为数字,则会转换为 NaN;
  • 乘、除运算时,也会先将字符串转换为数字。

3. JS 强制类型转换

与隐式类型转换相反,强制类型转换需要手动进行,在 JavaScript 中,强制类型转换主要是通过调用全局函数来实现的,例如 Number()、Boolean()、parseInt()、parseFloat() 等。

1) 使用 Number() 函数

Number() 函数的语法格式如下:

 

标签:类型转换,输出,46,JavaScript,write,字符串,document,隐式
From: https://www.cnblogs.com/jiajunling/p/16788196.html

相关文章

  • Luogu P3469 [POI2008]BLO-Blockade
    [P3469POI2008]BLO-Blockade-洛谷|计算机科学教育新生态(luogu.com.cn)图\(G\)本身联通。删除\(u\)的连边后会形成\(k\ge2\)个连通块(至少会把\(u\)隔离出......
  • Java 类型转换
    1、什么是类型转换?在java中类型转换是一个非常重要的知识点。因为java是一门强类型语言,所以在数据运算中会存在类型转换,首先我们需要知道java中的类型转换一共分为两类:自......
  • 146-《大数据架构师》Flink 架构深剖到源码详解 07_ev
                                                         ......
  • vue.js 类型转换 强类型转强类型
    1、js常规类型转换https://www.cnblogs.com/123525-m/p/15788443.htmlhttps://blog.csdn.net/allway2/article/details/1249550872、vue强类型转强类型自定义强类型Co......
  • 数据类型&数据类型扩展&类型转换
    数据类型Java属于强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用-->安全性高,速度较低Java的数据类型分为两大类基本类型(primitivety......
  • 前端Vue2-Day46
    Vue的特点:1.采用组件化模式,提高代码复用率,使代码易于维护。2.声明式编码,编码人员无需直接操作DOM,提高开发效率。3.使用虚拟DOM和diff算法,尽量复用DOM节点。Vue.config......
  • StE460低合金、StE460钢板力学性能及化学成分
    一、StE460简介:StE460德标牌号钢板,StE460属于细晶粒钢,StE460舞阳钢厂可以生产。StE460用于要求具有良好的冷成型性及高强度要求的汽车纵梁、横梁等结构件。StE460钢板执行标......
  • libcurl 0xC0000005: 读取位置 0x00006464 时发生访问冲突
    场景   长时间调用libcurl获取数据,异常崩溃,提示如下:0x7298464D (ucrtbased.dll) (yushivehicleservice.exe.dmp 中)处有未经处理的异常: 0xC0000005: 读取位置 0......
  • 46、django工程(view)
    46.1、djangoview视图函数说明:1、http请求中产生两个核心对象:(1)http请求:HttpRequest对象。(2)http响应:HttpResponse对象。2、views函数是接收用户请求,处理业务逻辑的函数:46.......
  • 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(沈阳)
    有时候,很简单的模板题,可能有人没有做出来,(特指I),到时候一定要把所有的题目全部看一遍目录B题解EF题解HI题解&代码JB输入样例32121231输出样例1说明In......