JavaScript基础:(加号,数值转换,布尔转换)
JavaScript中加号运算符"+" 运算过程理解
1) 如果其中一个操作数是对象,则对象会遵循对象到原始值的转换规则转换为原始值。日期对象通过toString()方法执行转换,其它对象则通过valueOf()方法执行转换。由于多数对象都不具备valueOf()方法,因此就会调用toString()方法来进行转换。
2)在进行对象到原始值的转换后,如果其中一个操作数是字符串的话,则另一个操作数也会转换为字符串,然后进行字符串的连接操作。
3)否则,两个操作数都将转换为数字(或者NaN),然后进行加法操作。
不同类型操作数相加后的类型如下表:
| undefined1 | null2 | boolean3 | number4 | string | |
| undefined | number(NaN) | number | number | number | string |
| null | number(NaN) | number(0) | number | number | string |
| boolean | number(NaN) | number(1或0) | number | number | string |
| number | number(NaN) | number | number | number | string |
| string |
string |
string | string | string | string |
1、
“a”+undefined = “aundefined”;
总结:任何基本数据类型(除String外)+undefined都为number类型,值为NaN
2、
true+null=1;(true转为1,null转为0)
false+null=0;(false转为0,null转为0)
10+null=10;
null+“str”=”nullstr”;
3、
true+true=2;(true转为1)
true+false=1;(true转为1,false转为0)
10+true=11;(true转为1)
true+“1”=“true1”;
4、
6+“77”=“677”
JavaScript中parseInt()和parseFloat()非强制转换,Number()强制转换
1、parseInt(string, radix): 函数可解析一个字符串,并返回一个整数。
当忽略参数 radix , JavaScript 默认数字的基数如下:当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
- 如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
- 如果 string 以 0 开头,ECMAScript版本小于ECMAScript 5,当字符串以"0"开头时默认使用八进制,ECMAScript 5使用的是十进制
- 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
例:
parseInt(“123”);123
parseInt(“ 0消费”);0(忽略前面的空格)
parseInt(“0xf”);15
parseInt(“0 xf”);0 (中间的空格不忽略)
2、parseFloat(string): 函数可解析一个字符串,并返回一个浮点数。
提示和注释
开头和结尾的空格是允许的。
提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
提示:如果只想解析数字的整数部分,请使用 parseInt() 方法。
实例
例子 1
在本例中,我们将使用 parseFloat() 来解析不同的字符串:
<script type="text/javascript">
document.write(parseFloat("10"))
document.write(parseFloat("10.00"))
document.write(parseFloat("10.33"))
document.write(parseFloat("34 45 66"))
document.write(parseFloat(" 60 "))
document.write(parseFloat("40 years"))
document.write(parseFloat("He was 40"))
</script>
输出:
10
10
10.33
34
60
40
NaN
例子 2
下面的例子都返回 3.14:
<script type="text/javascript">
document.write(parseFloat("3.14"))
document.write(parseFloat("314e-2"))
document.write(parseFloat("0.0314E+2"))
document.write(parseFloat("3.14more non-digit characters"))
</script>
输出:
3.14
例子 3
下面的例子将返回 NaN:
<script type="text/javascript">
document.write(parseFloat("FF2"))
</script>
输出:
NaN
3、Number():强制转化,如果转换的是字符串,字符串内必须都是有效的数字字符才可以转换,如过有一个不是有效数字,则无法转换,会返回NaN。
var cur="1adc";
var str="1";
console.log(Number(cur));//NaN
console.log(Number(str));//1
4、Booleanr():强制转化
1、除0(-0)之外的所有数字,转换为boolean型都为true
2、除“”(空字符串)之外的所有字符转为boolean 都为true,空格字符串也为true
3、null和undefined转换为boolean型是false
4、特殊数字NaN转为boolean型也为false
(有就true,无就false,特殊NaN永远都是false)
JavaScript基础:(加号,数值转换,布尔转换)的更多相关文章
- JavaScript基础知识(数据类型及转换、运算符)
9.数据类型 概念:表示当前存储的数据的分类(表示数字 - 整数和小数) u 原始类型(原始值) -----[typeof运算符:判断变量的原始类型] *number(数字):表示数字 ...
- Python基础:数值(布尔型、整型、长整型、浮点型、复数)
一.概述 Python中的 数值类型(Numeric Types)共有5种:布尔型(bool).整型(int).长整型(long).浮点型(float)和复数(complex). 数值类型支持的主要操 ...
- 小tips:JS数值之间的转换,JS中最大的Number是多少?,JS == 与 === 的区别
JS数值之间的转换 Number(), parseInt(),parseFloat() Number()函数的转换规则如下: 1.如果boolean值,true和false将分别被转换为1和02.如果 ...
- 『Python基础-5』数字,运算,转换
『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...
- JavaScript中基本数据类型之间的转换
在JavaScript中共有六种数据类型,其中有五种是基本数据类型,还有一种则是引用数据类型.五种基本数据类型分别是:Number 数值类型.String 字符串类型.Boolean 布尔类型, nu ...
- javascript实现unicode与字符互相转换
javascript实现unicode与字符互相转换. <script language="javascript"> //手机检测 function checkMo ...
- Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)
Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...
- JavaScript中进制之间的转换
JavaScript中进制之间的转换 //十进制转其他 var x = 100; alert(x); alert(x.toString(2)); //转2进制 alert(x.toString(8)) ...
- 【C++自我精讲】基础系列五 隐式转换和显示转换
[C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐 ...
随机推荐
- java8 创建树结构的数据
private List<TreeNode> createTree(Integer pid, Map<Integer, List<SysPermission>> m ...
- redis系列:redis介绍与安装
前言 这个redis系列的文章将会记录博主学习redis的过程.基本上现在的互联网公司都会用到redis,所以学习这门技术于你于我都是有帮助的. 博主在写这个系列是用的是目前最新版本4.0.10,虚拟 ...
- gulp使用文档
gulp的优势 易于使用:通过代码优于配置的策略,Gulp让简单的任务简单,复杂的任务可管理. 构建快速:利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作. 插件高质:Gul ...
- [FZU 1901]Period II KMP
For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SIZE(S)-p-1], then the ...
- Unity Shader着色器优化
https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247493518&idx=1&sn=c51b92e9300bcf ...
- 洛谷P2746 校园网Network of Schools
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意即使 \(B\) 在 \(A\) 学校的分发列表中, \(A ...
- thinkphp5 join使用注意
A表有id,name,time等字段, B表有id,type,uid,email,address等字段. A表中的id和B表中的uid对应. Db::table(A表)->alias('a') ...
- 关于苹果出现NaN的情况----由Date格式解析方式不同引起的Bug
源于一个工作中遇到的问题:IOS 上时间显示为 NaN,而安卓上时间显示正常. 问题的根源在于 安卓 和 苹果 对于 JS Date 对象的不同解析. 安卓: new Date("2018- ...
- Command模式(命令设计模式)
Command?? 把方法的调用用一个类的实例来承载,要管理工作的历史记录,创建这些方法执行的命令的集合,只需管理这些实例的集合即可,而且还可以随时再次执行过去的命令,或是将多个过去的命令整合为一个新 ...
- jcmd jmap应用:一个String经典笔试题的验证
笔试题: String strA = new String("123123");这一行中创建了几个String对象?? public class StringHeapCountTe ...