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基础:(加号,数值转换,布尔转换)的更多相关文章

  1. JavaScript基础知识(数据类型及转换、运算符)

    9.数据类型 概念:表示当前存储的数据的分类(表示数字 - 整数和小数) u  原始类型(原始值) -----[typeof运算符:判断变量的原始类型] *number(数字):表示数字        ...

  2. Python基础:数值(布尔型、整型、长整型、浮点型、复数)

    一.概述 Python中的 数值类型(Numeric Types)共有5种:布尔型(bool).整型(int).长整型(long).浮点型(float)和复数(complex). 数值类型支持的主要操 ...

  3. 小tips:JS数值之间的转换,JS中最大的Number是多少?,JS == 与 === 的区别

    JS数值之间的转换 Number(), parseInt(),parseFloat() Number()函数的转换规则如下: 1.如果boolean值,true和false将分别被转换为1和02.如果 ...

  4. 『Python基础-5』数字,运算,转换

    『Python基础-5』数字,运算,转换 目录 基本的数字类型 二进制,八进制,十六进制 数字类型间的转换 数字运算 1. 数字类型 Python 数字数据类型用于存储数学上的值,比如整数.浮点数.复 ...

  5. JavaScript中基本数据类型之间的转换

    在JavaScript中共有六种数据类型,其中有五种是基本数据类型,还有一种则是引用数据类型.五种基本数据类型分别是:Number 数值类型.String 字符串类型.Boolean 布尔类型, nu ...

  6. javascript实现unicode与字符互相转换

    javascript实现unicode与字符互相转换. <script language="javascript">  //手机检测  function checkMo ...

  7. Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)

    Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...

  8. JavaScript中进制之间的转换

    JavaScript中进制之间的转换 //十进制转其他 var x = 100; alert(x); alert(x.toString(2)); //转2进制 alert(x.toString(8)) ...

  9. 【C++自我精讲】基础系列五 隐式转换和显示转换

    [C++自我精讲]基础系列五 隐式转换和显示转换 0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐 ...

随机推荐

  1. MySQL server has gone away问题得解决方案

    mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了. 造成这样的原因一般是s ...

  2. Python中读取,显示,保存图片的方法

    一 opencv import cv2 as cv # load img = cv.imread(imagepath) # shape=(height, width, channel) h,w,c = ...

  3. 开发php接口注意点

    1.制定规范 开发前一定要定好一个规范,比如要定好数据返回的通用参数和格式.关于数据格式,用的比较多的有xml和json,我建议用json,因为json比xml的好处更多. 2.精简的返回数据 接口数 ...

  4. webpack -- 多页面简单小例

    有时单页面并不能满足我们的业务需求,就需要去构建多页面应用,以下为简单小例: entry:{ index:'./src/module/index/index.js', student:'./src/m ...

  5. Python-OpenCV中的图像轮廓检测

    目录 cv2.findContours()   主要记录Python-OpenCV中的cv2.findContours()方法:官方文档: cv2.findContours()   在二值图像中寻找图 ...

  6. ASP.NET控件之RegularExpressValidator控件

    作用:对Textbox或者其他输入框进行正则验证: 属性:ControlToValidate:要验证的控件: ErrorMessage:错误提示信息: ValidationExpression:正则表 ...

  7. Openjudge jubeeeeeat

    jubeeeeeat 题目链接 总时间限制:  1000ms 内存限制:  256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐 ...

  8. 洛谷P3006 [USACO11JAN]瓶颈Bottleneck(堆模拟)

    传送门 感觉这题的思路还是挺不错的.然而为啥全网就一个题解而且只有代码……然后我只好看着代码理解了好久…… 题意就是有一棵树,每一个节点向他父亲节点连边,且有一个容量表示每一秒可以经过的牛的数量,每一 ...

  9. 【手撸一个ORM】MyOrm的使用说明

    [手撸一个ORM]第一步.约定和实体描述 [手撸一个ORM]第二步.封装实体描述和实体属性描述 [手撸一个ORM]第三步.SQL语句构造器和SqlParameter封装 [手撸一个ORM]第四步.Ex ...

  10. SGU - 409

    题目链接:https://vjudge.net/contest/239445#problem/H 题目大意:输入n,k,有n*n* n*n的网格,要求每行每列刚好有k个*,每n*n的小方格内也刚好有k ...