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 隐 ...
随机推荐
- C#中索引器Indexer的学习使用
索引器 顾名思义,是用来索引的,那么C#中索引器是用来索引什么的呢 首先我们知道,C#中的数组是本身就可以索引的,那么C#中的类和结构呢,类和结构的实例是无法索引的,如果我们想让C#中类或者结构的实例 ...
- 手写一个admin 组件------STARK
开一个新的项目,,建立一个stark 包, 在里面创建一个service包,在service 包里创建一个stark.py 文件, 配置好环境, makemigreations, migreate. ...
- 删除docker私有仓库中的镜像
1.搭建私有仓库 (1)拉取私有仓库镜像 docker pull registry(2)启动私有仓库容器 docker run ‐di ‐‐name=registry ‐p 5000:5000 reg ...
- Eclipse插件无法识别的解决方法汇总
参考 http://www.cnblogs.com/apollolee/archive/2013/06/18/3142243.html
- 【leetcode 968. 1028. 从先序遍历还原二叉树】解题报告[待完善...]
思路:用一个栈来管理树的层次关系,索引代表节点的深度 方法一: TreeNode* recoverFromPreorder(string S) { /* 由题意知,最上层节点深度为0(数字前面0条横线 ...
- 51nod1419 【数学】
思路: n<=3,就是n. 考虑n>3: 我们可以轻松证明n,n-1这两个数互质: 设gcd(n,n-1)=g,n=g*k1,n-1=g*k2; n-(n-1)=g(k1-k2)=1; 所 ...
- Java8 使用 stream().map()提取List对象的某一列值及排重
List对象类(StudentInfo) public class StudentInfo implements Comparable<StudentInfo> { //名称 privat ...
- kuangbin专题16A(kmp模板)
题目链接: https://vjudge.net/contest/70325#problem/A 题意: 有两个数组 a, b, 输出 b 数组在 a 数组中的第一个匹配位置, 不能匹配则输出 -1. ...
- jmeter-提取器之JSON Path PostProcessor
后置处理器添加 json path postprocessor. 用处: 当前接口响应返回的json中提取内容,作为变量可以在不同的请求中传递. 1. json path postprocessor ...
- EOS 智能合约编写(一)
本文编写了一个简单的EOS智能合约,实现用户管理和资产管理,包括存钱,取钱,转帐的功能,旨在学习如何编写自己的EOS合约功能. 系统:Ubuntu EOS版本:v1.1.1 一.智能合约代码 ...