数据类型的强制转换就是通过js提供的函数进行数据转换。常见的就是将其他类型的数据转换成number类型和string类型。

一、其他类型转 number 类型

1.Number
Number 方法将其他类型的数据转换为Number类型,返回一个新的数值,不会改变变量本身。
例1:基本数据类型转换为Number类型

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LiuQing</title><style>#box {background-color: red;}</style>
</head><body><div id="box">LiuQing</div><script>var a = 10;var b = true;var c = "hello";console.log(Number(a)); // 10console.log(Number(b)); // 1 Boolean 类型转换成 number 类型的 0 和 1console.log(Number(null)); // 0console.log(Number(undefined));// NaNconsole.log(Number(c)); // NaN 不是数字,转换不成功返回NaNconsole.log(Number("123"));// 123 数字字符串可以转为数字 ( 全部是数字 )console.log(Number("123haha")); // NaNconsole.log(Number("00000001"));// 1console.log(Number("")) // 0</script>
</body>
</html>


Number方法将字符串转换成number类型时,只能转换纯数字字符串和空字符串,其他的都是NaN。

2.parseInt 与 parseFloat
有些情况下,我们需要对字符串进行一些运算操作了,例如‘12px’需要在当前像素的基础上自加,针对于12px这种情况,可以通过parseInt与parseFloat转换,都是转换为 number 类型,parseInt 是转换成整型。parseFloat 转换成浮点型,即可以保留小数。
语法:

  • parseInt(要转换的内容) : 转换为Number类型,取整,舍弃小数部分
  • parseFloat(要转换的内容): 转换为Number类型,保留小数

例2:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LiuQing</title><style>#box {background-color: red;}</style>
</head><body><div id="box">LiuQing</div><script>var width = '100px';console.log(parseInt(width)); // 100var str3 = "a124";console.log(parseInt(str3)); // NaNvar str4 = '12a3';console.log(parseInt(str4));// 12var str5 = '12.5';console.log(parseInt(str5)); // 12console.log(parseFloat(str5));// 12.5</script>
</body></html>



parseInt和parseFloat在转换时是对数据进行解析转换,前者是整数,后者是浮点数。
他们解析的原则是从前往后进行解析,尽其所能。
若存在有能识别的数字就解析,遇到不能识别的就结束转换,如果第一位就不是数字则返回NaN
但是parseInt还可以有第二个参数,即以什么进制进行转换(建议任何时候加上第二个参数10,即以10进制转换),而parseFloat没有第二个参数。

**语法:**parseInt(string,radix)

    var num = '070';console.log(parseInt(num)); // 在IE8及以下返回56(是将它当作8进制转换了),在其它浏览器返回70console.log(parseInt(num, 10)); // 加了第二个参数后,在所有浏览器下都返回70,建议任何时候都加上第二个参数


3.其他 isNaN

isNaN:is not a number 是不是不是数字,返回boolean值。是数字返回false,不是数字返回true。可以用于判断当前字符串是否是纯数值字符串。

例3 :

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LiuQing</title><style>#box {background-color: red;}</style>
</head><body><div id="box">LiuQing</div><script>// isNaN内部调用Number()方法,如果Number能转成功数字,则返回false,如果转不成功,则返回true。console.log(isNaN("Ab")); // trueconsole.log(isNaN("1")); // falseconsole.log(isNaN(null)); // falseconsole.log(isNaN(function a() { }));// trueconsole.log(isNaN(NaN)); // true</script>
</body></html>

二、其他类型转字符串

其他类型转字符串类型,使用到的方法有:

  • 变量.toString()
  • String(变量)

两个方法会生成一个新的字符串,不会改变原来的变量。

变量.toString()和String(变量)的区别是:String能针对任何数据类型,而toString不能针对undefined和null。

例1:

var num = 10;
var str = "hello";
var bool = false;
var arr = [1,2,3];
// 变量.toString();
console.log(num, num.toString()); // 10 "10"
console.log(str, str.toString()); // "hello" "hello"
console.log(bool, bool.toString());  // false "false"
console.log(arr, arr.toString()); // [1, 2, 3] "1,2,3"// 范围2-36  转换成相对进制的字符串
console.log(num.toString(2)); // 1010// String(变量)
console.log(num, String(num)); // 10 "10"
console.log(String(undefined)); // 'undefined'
console.log(String(null)); // 'null'

三、其他类型转布尔值

格式:Boolean(变量),可以将任何变量转换为布尔值。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>LiuQing</title><style>#box {background-color: red;}</style>
</head><body><div id="box">LiuQing</div><script>console.log(Boolean(''));  // falseconsole.log(Boolean('a')); // trueconsole.log(Boolean(0)); // falseconsole.log(Boolean(1)); // trueconsole.log(Boolean(-1)); // trueconsole.log(Boolean(NaN)); // falseconsole.log(Boolean(null)); // falseconsole.log(Boolean(undefined)); // falseconsole.log(Boolean([])); // trueconsole.log(Boolean({})); // true</script>
</body></html>


JavaScript世界的假值:undefined、null、false、空字符串、0、NaN
除了这六个值之外,其它的均是真值,一切对象都是真值,包括[] 和 {}。

扩展:JS中toString和valueOf在什么时候会自动触发

1、==和===的不同
前者会自动转换类型 值判断数值 不判断类型

let  a = 12;
let  b = '12'
console.log(a==b) //true

后者先比较数值后比较数据类型都一样时才一样

let  a = 12;
let  b = '12'
console.log(a===b) //false

前端基础(四)_数据类型的强制转换相关推荐

  1. python中如何进行数据类型转换_python数据类型的强制转换

    首页 专栏 python 文章详情 0 python数据类型的强制转换 小小垂髫 发布于 1 月 21 日 数据类型的强制转换 如果要将一个数据转换成另一个数据类型,只需要将其放入相应类型的函数中去. ...

  2. python nonetype转换float_python数据类型的强制转换

    数据类型的强制转换 如果要将一个数据转换成另一个数据类型,只需要将其放入相应类型的函数中去. Number类型的数据转换 强制转换为int 可以转换的数据类型 int 整型 float 浮点型 boo ...

  3. Java 基本数据类型的强制转换和自动转换,基本数据类型包装类,Integer常用方法,Integer中equals和==的区别

    文章目录 基本数据类型的自动转换 基本数据类型的强制转换 包装类(封装类) Integer类中的方法 一:Number中的xxxValue()方法 二:Integer.parseInt("S ...

  4. python强制转换整数_python数据类型的强制转换

    数据类型的强制转换 如果要将一个数据转换成另一个数据类型,只需要将其放入相应类型的函数中去. Number类型的数据转换 强制转换为int 可以转换的数据类型 int 整型 float 浮点型 boo ...

  5. 学习笔记 | c++中四种类型cast(强制)转换

    c++中四种cast转换 C++四种强制转换方式,应用场景,细节 1.const_cast 用于将const变量转为非const. 用来修饰类型的const或volatile属性.除了去掉const或 ...

  6. java 前端基础知识_【计算机·知识】关于前端的计算机基础知识

    原标题:[计算机·知识]关于前端的计算机基础知识 作为一个刚刚入门的程序猿,你是否对专业知识有足够的了解?今天新闻君带你走进前端的世界. 前端的语言接触起来相对于后端的语言要容易不少,但前端的语言也有 ...

  7. JavaScript中基本数据类型的强制转换

    JavaScript中基本数据类型转化 将一个数据类型强制转换为其他的数据类型 主要指String Number Boolean 这三种之间的相互转化. 一.其他数据类型转换String 我们有两种方 ...

  8. 前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)

    一.数据类型分类 1.1.数据类型分类 JavaScript的数据类型为弱类型,即最开始的时候并不知道变量是什么类型,必须通过后面的值才能知道. JavaScript的数据类型分为简单数据类型(也称为 ...

  9. 前端基础(八)_盒子模型(标准盒子模型和怪异盒子模型)

    盒子模型 什么是盒子模型 网页设计中常听的属性名:内容(content).内边距(padding).边框(border).外边距(margin), CSS盒子模型都具备这些属性.这些属性我们可以用日常 ...

最新文章

  1. jforum中对各种servlet对象都进行了封装
  2. 太任性!00 后少年买不到回国机票,因“泄愤”找黑客攻击系统,被判刑 4 年
  3. 我来谈谈PHP和JAVA在web开发上的的区别
  4. 扩展iQuery使其支持多种编程语言(二) – 兼编译器的语法分析简介
  5. 《复杂》读书笔记(part6)--计算机中的自我复制
  6. 一个问题让我直接闭门思过!!!拼多多面试必问项之List实现类:LinkedList
  7. C++ namespace
  8. C++——有关chrono库的duration
  9. 难度炸裂!DeepChange:一个新的超大规模的换衣行人再识别数据集
  10. 基于JAVA+Servlet+JSP+MYSQL的设备管理系统
  11. 小宝机器人的储存容量_扫地机器人和吸尘器哪个更实用?
  12. 游戏服务器停机维护,游戏是如何做到服务器不停机维护的?
  13. 访问共享文件时切换默认的访问账号
  14. go的匿名函数和闭包
  15. git merge/git rebase分支合并
  16. 137_原始套接字_发送UDP数据,模仿他人飞秋给另一个飞秋客户端发送信息
  17. C#自定义控件添加至工具箱的方法
  18. 顶级赛事|2021 CCF大数据与计算智能大赛重磅来袭!
  19. 中国机器视觉市场研究报告
  20. 重要主机信息安全概略

热门文章

  1. win10 条件下在anaconda中安装face_recognition(超简单,亲测有效)
  2. 366. 斐波纳契数列
  3. ETH基于POA的环境搭建
  4. android 判断文件是否存在
  5. Android 切换全屏,取消全屏
  6. 计算机组成原理实验课设:复杂指令模型计算机设计与实现
  7. 本质安全设备标准(IEC60079-11)的理解(二)
  8. 设计模式基础(二):目标与原则
  9. 《ZEMAX光学设计超级学习手册》一一2.5 其他
  10. python实现简陋的贪吃蛇小游戏