A.数据类型强制转换

1、转换为数值类型

Number(参数) 把任何的类型转换为数值类型

A.如果是布尔值,false为0,true为1

  var a=false;alert(Number(a)); a=0

B.如果是数字,转换成为本身。将无意义的后导0去掉    

  var a=3.2;alert(Number(a)); a=3.2

C.如果Null转换为0

  var a=null;alert(Number(a)); a=0

D.如果是undefined 转换为NaN not a number

  var a;alert(Number(a)); a=NaN

E.如果对象则会先调用对象的 valueOf(),如果valueOf()返回的是NaN,然后再调用对象的toString()

  var a={toString:function(){return 3;},valueOf:function(){return"abc";}}; alert(Number(a)) a=3

F.如果是字符串

  1.如果字符串当中只有数字,转换为10进制(忽略前导0和后导0)

    var a="0123.0";alert(Number(a)); a=123

  2.如果是有效的规范的浮点型,转换为浮点值(忽略前导0和后导0)

    var a="023.110";alert(Number(a)); a=23.11

  3.如果是空字符串,则转换为0

    var a="";alert(Number(a)); a=0

  4.如果是其他的值,返回NaN

    var a="chen";alert(Number(a)); a=NaN

parseInt(string,radix)  将字符串转换为整数

string 必需。要被解析的字符串。

radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

A.如果一个字符串只包含数字,则以10进制的方式转换为整型

  var a="12.2";alert(parseInt(a)); a=12

B.他会自动忽略字符串前面的空格,知道找到第一个非空的数值字符串,直到解析到第一个非数值的字符串结束。

  var a=" 2a2";alert(parseInt(a)); a=2

  var a=" 21a2";alert(parseInt(a)); a=21

  C.如果字符串的第一个字符不是空格、数字、-,那么返回NaN

    var a=" a21a2";alert(parseInt(a)); a=NaN

parseFloat() 将字符串转换为浮点数

A.字符串当中的.只有第一个有效,其他的都是无效的。

  var a="12.2";alert(parseInt(a)); a=12.2

B.如果字符串是一个有效的整数,他返回的是整数,不会返回浮点数。

  var a="12";alert(parseInt(a)); a=12

  var a="12.0";alert(parseInt(a)); a=12

2、转换为数值类型

1. String(参数):可以将任何的类型转换为字符串

  null 结果 null

  undefined 结果 undefined

  true 结果 true

  false 结果 false

  1 结果 1

  数值类型 结果 本身的字符串

2.toString()---调用的格式:对象.toString()。作用是将对象以字符串的方式来表示

  array.toString() 结果 由,分割的字符串

    var arr=[a,b,c];alert(arr.toString()); a,b,c

  Boolean.toString() 结果 两个值 true false

    var a=true;alert(arr.toString()); true

  String.toString() 结果 返回本身

    var a="陈";alert(arr.toString()); 陈

  Number.toString(radix) 结果 返回本身的字符串形式

    var a=12;alert(arr.toString()); 12

    radix 可选。规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。

  注意:null和undefined没有toString()方法

3、转换为布尔类型:Boolean()可以将任何类型的值转换为布尔值

转换为假: ""、 0、 NaN 、undefined、 false

其他的全部都转换为真

B.数据类型隐式转换

1.函数类

a.isNaN()

  该函数会对参数进行隐式的Number()转换,如果转换不成功则返回true;

  var a='a23';alert(isNaN(a)); true

  var a='23';alert(isNaN(a)); false

b.alert()输出的内容隐式的转换为字符串

  var a='23';alert(isNaN(a)); 23

2.运算符类

a.算数运算符 (- * / %)

如果操作数不是数值, 将会隐式的调用Number()函数,按照这个函数的转换规则进行转换,如果转换不成功,整个表达式返回NaN

var a='a23';var b='b23';alert(a+b); a23b23

var a='23';var b='bc';alert(a*b); NaN

*********加号(+)***********

*.如果操作数都是数值,然后进行相加

var a='2';var b='3';alert(a*b); 5

*.任何数据类型和字符串相加,都会隐私的调用他们的toString()方法,然后返回他们拼接的结果。

var a='2b';var b='c3';alert(a*b); 2bc3

*.如果操作数都是布尔值,那么进行Number()转换,false为0,true为1,进行相加。

var a=true;var b=false;alert(a+b); 1

var a=true;var b=true;alert(a+b); 2

b.关系运算符

关系运算符的操作数可以是任何类型,如果操作数不是数值类型,将会隐式的转换

1.运算的结果都是布尔值(ture;false)

2.都是字符串的时候,会转换成ASCII码再比较;多个字符串只比较首个,首个相等再比较下一个。

  var a='abv';var b='aba';alert(a>b);结果ture.

  ASCII码:a=a; -> b=b; -> v>a;

3.都是数值正常比较

4.当一个是字符串,一个为数值的时候;会把字符串转化为数值类型,然后进行比较,如果不能转换为数值类型,则会返回NaN,返回false

5.unfinished null

6.如果两个都是数值型字符串,那么他们也只是比较第一个。

  var a='223';var b='31';alert(a>b); == false

7.一个数值和布尔值比较,会把布尔值转化为数值后再较。

  false=0;true=1

c.等性运算符 (== !=)

会对操作数隐式的转换后再比较值

(1)如果其中至少有一个是布尔值,那么会隐式的调用Number()进行转换,然后比较。

(2)如果一个为字符串。另一个为数值,那么会隐式的调用Number()对字符串进行转换,如果转换不成功,则返回false;

(3) undefined == null

  (a) 比较字符串的时候是比较他们的ASCII码是否相等

  (b) 比较两个数值的时候是比较他们的数值是否相等

  (c) 比较函数的时候,判断他们的位置是否相等。

d.逻辑运算符

A. 放在表达式里面用于判断。

B. 给变量赋值

  var a= b && c

  如果一个运算数是对象,另一个是隐式的调用Boolean()函数,返回该对象。

  如果两个运算数都是对象,返回第二个对象。

  如果某个运算数是 null,返回 null。

  如果某个运算数是 NaN,返回 NaN。

  如果某个运算数是 undefined,发生错误。

  var a=b ||c

  如果一个运算数是对象,并且该对象左边的运算数隐式的调用Boolean()函数 值为 false,则返回该对象。

  如果两个运算数都是对象,返回第一个对象。

  如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。

  如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。

  如果某个运算数是 undefined,发生错误。

3、语句类

if(表达式){}else{}

格式: var 变量= Boolean expression?真值:假值

while(){}

if语句和三元表达式里面的表达式会隐式的调用Boolean()函数,按照这个函数的转换规则,转换为相应的布尔值

javascript笔记整理(数据类型强制/隐式转换 )的更多相关文章

  1. JavaScript的六种数据类型与隐式转换

    一.六种数据类型 javascript的数据类型包括: (1)基本数据类型:number.string.boolean.null.undefined (2)对象:object object又包括Fun ...

  2. javascript深入浅出——学习笔记(六种数据类型和隐式转换)

    在慕课之前学过JS深入浅出,最近发现很多东西都记不太清楚了,再复习一遍好了,感觉这个课程真的超级棒的,做做笔记,再添加一些学习内容

  3. oracle数据类型及其隐式转换

    oracle有三种最基本的数据类型,即字符型.数值型.日期型. oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数,如下: 1)to_char     ...

  4. 数据类型,隐式转换以及json,对象,引用类型,预解析 视频教程

    随便看看,需要有一点一点基础. 链接:http://pan.baidu.com/s/1c20pcOC 密码:xq2x

  5. js中的数据类型隐式转换的三种情况

    js的数据类型隐式转换主要分为三种情况: 1. 转换为boolean类型 2. 转换为number类型 3. 转换为string类型 转换为boolean类型 数据在 逻辑判断 和 逻辑运算 之中会隐 ...

  6. SQL Server有意思的数据类型隐式转换问题

    写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类.这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅构造一个简单的案例来展现一下这个问题.我们先构造测试数据,如下所示: CRE ...

  7. JavaScript学习笔记——数据类型强制转换和隐式转换

    javascript数据类型强制转换 一.转换为数值类型 Number(参数) 把任何的类型转换为数值类型 A.如果是布尔值,false为0,true为1 B.如果是数字,转换成为本身.将无意义的后导 ...

  8. JavaScript复习之--javascript数据类型隐式转换

    JavaScript数据类型隐式转换.一,函数类    isNaN()    该函数会对参数进行隐式的Number()转换,如果转换不成功则返回true.    alert()    输出的内容隐式的 ...

  9. Web | JavaScript的引用数据类型强制转换类型

    我在这里主要的想提下的是JavaScript中的引用类型进行强制转换类型.因为对于基本数据类型的变换大多都是雷同的,很容易熟知,但是引用数据类型有一点小插曲. JavaScript的引用类型主要为对象 ...

随机推荐

  1. 解决Sublime Text3莫名的中文乱码问题

    有好几回用Sublime Text3写着中英混杂的文字的时候,会突然就弹出警告说什么编码不行,然后点击确定后,原来的中文全都乱码了: 然后即使按ctrl+z撤回也没用,重新打开也没用,用记事本的转换a ...

  2. 红帽系列linux自行配置本地yum源

    yum是红帽系列的一种包管理工具,能方便的自动解决安装包的依赖关系.以前用rpm包管理安装gcc时,rpm -ivh gcc.rpm ,一般会提示要安装gcc需要安装某某lib库,等你找到那个库的rp ...

  3. nginx学习六 高级数据结构之双向链表ngx_queue_t

    1 ngx_queue_t简单介绍 ngx_queue_t是nginx提供的一个轻量级的双向链表容器,它不负责存储数据,既不提供数据的内存分配.它仅仅有两个指针负责把数据链入链表.它跟stl提供的qu ...

  4. JavaScript 高级程序设计(第3版)笔记——chapter4:变量、作用域和内存问题

    Chapter4 变量.作用域和内存问题 l  理解基本类型和引用类型的值 l  理解执行环境 l  理解垃圾收集 4.1基本类型和引用类型的值 l  ECMAScript变量包含两种不同数据类型的值 ...

  5. 64位系统/32位系统下/8位CPU的数据宽度

    不同的编译器根据不同的 64 位模型有所不同. 比如 Visual C++,从第一个支持 64 位的版本起,一直就是使用 LLP64 内存模型,也就是说,编译出的代码除了 long 和指针是 64 位 ...

  6. 非root不能gdb attach的限制

    Could not attach to process.  If your uid matches the uid of the targetprocess, check the setting of ...

  7. C语言结构体变量内存分配与地址对齐

    地址对齐简单来说就是为了提高访问内存的速度. 数组的地址分配比较简单,由于数据类型相同,地址对齐是一件自然而然的事情. 结构体由于存在不同基本数据类型的组合,所以地址对齐存在不同情况,但总体来说有以下 ...

  8. ORACLE存储过程笔记1

    ORACLE存储过程笔记1 一.基本语法(以及与informix的比较)   create [or replace] procedure procedure_name (varible {IN|OUT ...

  9. 为什么C语言在2013年仍然很重要:一个简单的例子

    附注:在最初的文章里,我没说明进行模2^64的计算——我当然明白那些不是“正确的”斐波那契数列,其实我不是想分析大数,我只是想探寻编译器产生的代码和计算机体系结构而已. 最近,我一直在开发Dynvm— ...

  10. InheritableThreadLocal

    InheritableThreadLocal继承自ThreadLocal,但比ThreadLocal多一个特性: 子线程可以继承父亲线程上下文中的信息 但是,有两个点需要注意的: 只有子线程创建之前的 ...