javascript数据类型强制转换

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

  A.如果是布尔值,false为0,true为1
  B.如果是数字,转换成为本身。将无意义的后导0去掉。
  C.如果Null转换为0
  D.如果是undefined 转换为NaN not a number
  E.如果对象则会先调用对象的 valueOf(),如果valueOf()返回的是NaN,然后再调用对象的 toString()
  F.如果是字符串
    1.如果字符串当中只有数字,转换为10进制(忽略前导0和后导0)
    2.如果是有效的规范的浮点型,转换为浮点值(忽略前导0和后导0)
    3.如果是空字符串,则转换为0
    4.如果是其他的值,返回NaN

parseInt(参数1,参数2)字符串转换为整数
  A.如果一个字符串只包含数字,则以10进制的方式转换为整型。
  B.他会自动忽略字符串前面的空格,直到找到第一个非空的数值字符串,直到解析到第一个非数值的字符串结束。
  C.如果字符串的第一个字符不是空格、数字、-,那么返回NaN
  D.参数1
    八进制 十进制 十六进制
    0 后面的数字不能超过7 0x 0-9 a-f
   参数2
    控制解析模式 2-32

parseFloat()字符串转换为浮点数
  A.字符串当中的.只有第一个有效,其他的都是无效的。
  B.如果字符串是一个有效的整数,他返回的是整数,不会返回浮点数。

二、转换为字符串类型
1. String(参数)
可以将任何的类型转换为字符串
  null和undefined: 也都会转换为字符串,分别是 null和undefined
  布尔类型:会返回true或者false
  数值类型:本身的字符串

2.toString()
调用的格式 对象.toString()
作用是将对象以字符串的方式来表示
  array.toString()   返回  由,分割的字符串
  Boolean.toString()   返回  值 true或者false
  String.toString()    返回  本身
  Number.toString(参数) 返回  本身的字符串形式
  控制输出模式 :2-32

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

三、转换为布尔类型
Boolean() 可以将任何类型的值转换为布尔值
转换为假: ""、 0、 NaN 、undefined、 false
其他的全部都转换为真

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

二、运算符类

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

+
如果操作数都是数值,然后进行相加
任何数据类型字符串相加,都会隐私的调用他们的toString()方法,然后返回他们拼接的结果
如果操作数都是布尔值,那么进行Number()转换,false为0,true为1,进行相加

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

(1)他运算的结果都是布尔值
(2)都是字符串的时候,他会先隐式转换成ASCII码然后进行比较他们的第一个字母
(3)都是数值的时候,他会正常比较
(4)当一个是字符串,另一个是数值的时候,把字符串尝试转换成Number()数值类型,然后进行比较,如果不能转换成数值类型,则会返回NaN,然后返回假
(5) undefined == null
(6)如果两个都是数值型字符串,那么他们隐式转换成ASCII码,也是只比较第一个
(7)如果是一个数值布尔值进行比较,会把布尔值隐式转换为数值再进行比较,true为1, false为 0

3.等性运算符 == !=
对操作数隐式的转换后再比较值

(1)如果其中至少有一个是布尔值,那么会隐式的调用Number()进行转换,然后比较。
(2)如果一个为字符串。另一个为数值,那么会隐式的调用Number()对字符串进行转换,
如果转换不成功,则返回false;
(3) undefined == null
(a) 比较字符串的时候是比较他们的ASCII码是否相等
(b) 比较两个数值的时候是比较他们的数值是否相等
(c) 比较函数的时候,判断他们的位置是否相等

4.逻辑运算符
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,发生错误。

三、语句类

if(表达式){

}else{

}

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

while(){

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

JavaScript学习笔记——数据类型强制转换和隐式转换的更多相关文章

  1. JS的类型转换,强制转换和隐式转换

    JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123; var str1='123'; console.log(typeof s ...

  2. SQL反模式学习笔记19 使用*号,隐式的列

    目标:减少输入 反模式:捷径会让你迷失方向 使用通配符和未命名的列能够达到减少输入的目的,但是这个习惯会带来一些危害. 1.破坏代码重构:增加一列后,使用隐式的Insert插入语句报错: 2.查询中使 ...

  3. 【java】学习路线1-类型转换、隐式转换、强制转换

    /**文档注释,这里是一段文章一般放在类的外面*/public class HelloWorld{    //这个是注释的文本    public static void main(String[] ...

  4. c# 强制转换, 隐式转换, 显式转换

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  5. Scala 学习之路(十三)—— 隐式转换和隐式参数

    一.隐式转换 1.1 使用隐式转换 隐式转换指的是以implicit关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能.示例如下: // 普通人 clas ...

  6. scala中隐式转换之隐式转换调用类中本不存在的方法

    /** * Created by root * Description : 隐式转换调用类中本不存在的方法 */ class Person(name : String){ def getPersonN ...

  7. ES之基本数据类型之间的显示转换和隐式转换

    typeof(数据)/ typeof 数据 判断数据的数据类型,typeof返回的都是字符串 输出结果类型有:number.string.boolean. undefined.object.funct ...

  8. Android学习笔记_17_Intent匹配规则(隐式意图)

    Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行 ...

  9. C语言数据类型的转换(隐式转换)

    算术运算符中的转换规则: double ←── float 高↑long↑unsigned↑int ←── char,short 低 注意: 图中横向箭头表示必须的转换,如两个float型数参加运算, ...

随机推荐

  1. 0929mysql前缀索引如何找到合适的位数

    前缀索引,是指对于VARCHAR/TEXT/BLOB类型的字段建立索引时一般都会选择前N个字符作为索引.索引很长的字符列,会让索引变得大且慢.索引开始的部分字符,这样可以大大节约索引空间,从而提高索引 ...

  2. FastDFS搭建及java整合代码【转】

    FastDFS软件介绍 1.什么是FastDFS FastDFS是用C语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高 ...

  3. java基础语法要点<二>(基于1.8)

    注解(元数据) 从jdk5 开始,java支持在源文件中嵌入补充信息,称为注释(annotation).注释不会改变程序的动作,也就不会改变程序的语义.但在开发和部署期间,各种工具可以使用这类信息.元 ...

  4. Chrome DevTools good good study day day up

    Chrome DevTools 官方页面 https://developer.chrome.com/devtools

  5. Input checkbox 添加样式背景

    <style type="text/css"> .chk_1 { width: 20px; height: 20px; position: absolute; top: ...

  6. 【POJ 1269】判断两直线相交

    题 利用叉积解方程 #include <cstdio> #define MAX 1<<31 #define dd double int xmult(dd x1,dd y1,dd ...

  7. win7下安装redies

    https://github.com/MSOpenTech/redis 打开以后,可以直接使用浏览器下载,或者git克隆.注意:下载release版 解压后,目录下有以下这些文件: redis-ben ...

  8. 编译器角度看C++复制构造函数

    [C++对象模型]复制构造函数的建构操作 关于复制构造函数的简单介绍,可以看我以前写过的一篇文章C++复制控制之复制构造函数该文章中介绍了复制构造函数的定义.调用时机.也对编译器合成的复制构造函数行为 ...

  9. css-文本超出后显示省略号

    1.如果是单行文本: overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 2.如果是多行文本,将文本框高度设为文字行高的倍数 ...

  10. 【BZOJ-1086】王室联邦 分块 + 块状树

    1086: [SCOI2005]王室联邦 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 1094  Solved: ...