转换为布尔型

用两次非运算(!):

1 !!5 ==> true

用布尔型的构造函数:

1 new Boolean(5) == > true

值转换为布尔类型为false:0,+0,-0,NaN,""(空字符串),undefined,null

除上面的值其他值在转换以后为true,需要特别提到的是:"0",new Object(),function(){}

转换为字符串类型

加上空字符串"":

1 123 + "" "123"

用字符串构造函数:

1 new String(123) = "123".

需要特别注意的转化:

1 +0 ==> "0"
2 -0 ==> "0"
3 -Infinity ==>"-Infinity"
4 +Infinity ==>"+Infinity"
5 NaN ==> "NaN"
6 undefined ==> "undefined"
7 null ==> "null"
8 new Object() ==> "[object Object]"
9 function(){} ==> "function(){}"

转换为数值型

取正(+), 减零 (-0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值):

1 +"123" = 123
2 +true = 1

用构造函数Number();

1 new Number("123") = 123

几个需要特别注意的转化:

01 ""(空字符串) ==> 0
02 "010" ==> 10
03 "0x10"(16进制) ==> 16
04 "-010" ==> -10
05 "-0x10" ==> NaN
06 undefined ==> NaN
07 null ==> 0
08 true ==> 1
09 false ==> 0
10 new Object() ==> NaN
11 new function(){} ==> NaN

隐式类型转换

二元加法运算(+):如果两个操作数中有一个是String类型,将把两个操作数转换为String类型再相加。如果两个操作数中没有字符串类型,那么将把两个操作数转换为数值类型再做运算。

1 "123"+123 = "123123";
2 123+123 = 246
3 true true = 2
4 true + undefined = NaN (因为undefined转换为数值为NaN,所有结果为NaN)
5 true null = 1 (null转换为数字是0)
6 "123" null "123null" (包含字符串将转化为字符串相加)
7 "123" + undefined = "123undefined" (undefined同样适用)
8 1 + 2 + "123" "3123" (1+2是首先按照数值型计算的)

二元减乘除运算(-*/):因为只有数值类型才有 - * / 运算,所以会先将两个操作数转换为数值型再做运算。

1 "123"-123 = 0

一元取正(+),取负运算符(-):取正或者取负都是针对数值型的运算,所以会将操作数转换为数值型再做运算。

1 +"123" = 123
2 -"123" = -123
3 +"123e" = NaN
4 +"123f" = NaN
5 +"123e-2" = 1.23

一元非(!)运算符:非运算符需要将操作数转化为布尔类型。

1 !"123" false
2 !!"123" true
3 !123 = false
4 !!123 = true

逻辑运算符(&&)和(||):

在&&或者||的两侧被判断的时候会被转为布尔类型进行判断,但是我在测试的时候却发现一个有趣的事情。

&&运算符:如果有一个项为false,那么表达式返回false,如果所有的项都不为false,那么表达式返回最右边一个项的原始值。

123 && 23 && 45 返回 45,而不是我们想象中的true。所以如果有 123 && 23 == true 那么应该是false。至于if(123 && 23) 认为是true那应该是把23转换为布尔类型了。

||运算符:对 || 测试的结果也和我想象的不一样,|| 返回第一个转换以后不为false的值,如果都为false,它将返回最后一个为false的值(未进行类型转化之前的值)。

举例:123 || 23 返回 123,而不是想象中的true.false || null 返回null, 而不是想象中的false。

类型转换函数

parseFloat转换为浮点数:

字符解析函数获取每一个字符直到遇到不属于数值的字符,然后返回它已获取的数值。几个需要特别注意的:

1 ""(空字符串) ==> NaN
2 "123e-2" == > 1.23 (科学计算法是可以识别的)
3 "010" ==> 10 (8进制不能识别)
4 "0x10"==> 0 (16进制不识别)
5 "-010" ==> -10
6 null,undefined,true,false,new Object(),function(){} ==> NaN

parseInt转换为有符号整数:

跟parseFloat相似,但是他会把小数位舍掉(注意不是四舍五入,是完全舍弃,跟Math.floor处理方式一样),而且他可以识别八进制和16进制表示方式:

1 123e-2 == > 1
2 "123e-2" ==> 123
3 "010" == > 8
4 "0x10" ==> 16
5 "-010" == > -8
6 "-0x10" ==> -16
7 null,undefined,true,false,new Object(),function(){},-Infinity +Infinity NaN ==> NaN

三个取整函数的区别:

Math.ceil():"天花板",很形象吧?就是取大于等于参数的最小整数。

1 8.7 == > 9
2 -8.7==> -8

Math.floor():"地板",取小于等于参数的最小整数。

1 8.7 ==> 8
2 -8.7 ==> -9

Math.round():"四舍五入"取整数。

JavaScript数据类型转换方法汇总的更多相关文章

  1. SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总

    SQL Server游标   转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...

  2. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

  3. Javascript:Javascript数据类型详解

    要成为一个优秀的前端工程师,系统的学习Javascript,有夯实的Javascript基础,以及对语言本身的深刻的理解,是基本功.从Javascript数据类型开始,我将对Javascript知识体 ...

  4. JavaScript数据类型 typeof, null, 和 undefined

    JavaScript 数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object Da ...

  5. 网页、JavaScript 数据类型

    JavaScript 数据类型 一.基本数据类型: 字符串.数字.布尔.日期和时间 JavaScript 拥有动态类型 JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: 1 v ...

  6. javascript数据类型、初始化

    Javascript数据类型有6种: 数值型数据类型(Number): 字符串(String): 布尔型数据(Boolean): 对象数据(Object): 空(Null): 未定义(Undefine ...

  7. javascript中event汇总

    原文:javascript中event汇总 ie firefox chrome opera Safari浏览器中对 event的处理并不一致,在此我将各个浏览器中event的兼容处理做了一个汇总,此处 ...

  8. 第九十九节,JavaScript数据类型

    JavaScript数据类型 学习要点: 1.typeof操作符 2.Undefined类型 3.Null类型 4.Boolean类型 5.Number类型 6.String类型 7.Object类型 ...

  9. Javascript数据类型共有六种

    Javascript数据类型共有六种 /* var box; alert(typeof box); // box是Undefined类型,值是undefined,类型返回的字符串是undefined ...

随机推荐

  1. JMeter自学笔记3-创建自己的第一个测试用例

    一.写在前面的话: 上篇我们已经认识了JMeter的图形界面,大家应该都是很懵的.那么这篇,我们将学习使用JMeter创建第一个属于自己测试用例. 二.创建自己的第一个测试用例: 1.新建一个Thre ...

  2. 用列主元消去法分别解方程组Ax=b,用MATLAB程序实现(最有效版)

    数值分析里面经常会涉及到用MATLAB程序实现用列主元消去法分别解方程组Ax=b 具体的方法和代码以如下方程(3x3矩阵)为例进行说明: 用列主元消去法分别解方程组Ax=b,用MATLAB程序实现: ...

  3. JavaScript --经典问题

    JavaScript中如何检测一个变量是一个String类型?请写出函数实现 方法1. function isString(obj){ return typeof(obj) === "str ...

  4. 一个简单的页面弹窗插件 jquery.pageMsgFrame.js

    页面弹窗是网站中常用的交互效果,它可以强提示网站的某些信息给用户,或者作用于某些信息的修改等等功能. 这几天在做一个项目的时候,就顺捎把这个插件写一下,栽棵树,自己乘凉吧. 原创博文,转载请注明出处: ...

  5. 【Linux 运维】 安装PHP工具Composer

    一.安装PHP 由于Composer是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的 ...

  6. Exact Inference in Graphical Models

    独立(Independence) 统计独立(Statistical Independence) 两个随机变量X,Y统计独立的条件是当且仅当其联合概率分布等于边际概率分布之积: \[ X \perp Y ...

  7. scipy 图像处理-深度学习

    scipy 图像处理(scipy.misc.scipy.ndimage).matplotlib 图像处理 from scipy.misc import imread / imsave / imshow ...

  8. 基础数据类型-set

    Set是无序不重复元素的序列,基本功能是删除重复元素和测试成员关系, 创建一个集合可以用set()或者({}),但是创建一个空集合只能用set(): s1 = set() print("s1 ...

  9. POJ 3608 Bridge Across Islands(计算几何の旋转卡壳)

    Description Thousands of thousands years ago there was a small kingdom located in the middle of the ...

  10. nodejs笔记--Events篇(二)

    常用事件 /* 调用events模块,获取events.EventEmitter对象 */ var EventEmitter = require('events').EventEmitter; var ...