在我们谈到JS的数据类型转化时,一定会知道分为自动转化强制转化两种方式吧,通俗来讲,自动就是在某种条件下,电脑浏览器自己会把其他类型的数据转化为相应的数据类型,而强制则是咋们程序员应该手动来做的了,通过代码来在任何条件下都可以实现数据类型的转化。有不妥的地方欢迎大家指正哈。

  咋们进入正题,第一步嘛,肯定是需要知道JS的数据类型到底是有哪一些,有哪些分类(基础数据类型,复杂的下次再谈哈):

  1.布尔类型(Boolean),也是咋们经常常用的一种数据类型,它的值只有true/false,这两个数值,另外需要注意的则是,这两个值写的时候一定要小写

    例子:var p1 = 4 > 3; 这个p的数据类型则是true,反之则数据类型相反

  2.字符串类型(String/Str),当然他的数值也有相应的识别方法和书写规范,字符串当中的数值是需要用双引号" ",或者单引号' ',来包裹起来的。

    例子:var p2 = '上海 ',那么这个p2数据类型则是字符串类型

  3.undefined和null

    undefined 表示没有数值 --- 应该有数值,但是现在没有数值

    null      表示数值为空 --- 表示有数值,但是数值是"空"

  4.数值类型(整数,小数/浮点数,NaN),数值类型则相应多一点,但是也是好理解的,咋们一个一个来看

    整数:integer / int

      在计算机程序中,常用的整数类型有  
               二进制 : 0 , 1
                八进制 : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7
               十进制 : 0 - 9
               十六进制 : 0 - 9 a - f
       这里进制之间的转化时题外话,我就不多说了,最简单的方式了,咋们可以用电脑自带的计算机转到程序员模式,很快就能计算出来。
 
    小数/浮点数:在JavaScript中,对于浮点数的总位数有规定一个浮点数,有效数字/有效数值,最多 17 位,所谓的有效数字,值得是,左起,非零的数值。

      其中还分为有科学计数法,他的写法表达式为2e3,或者2e-3,他们相对应的数值是2000,和0.002。还有最重要的一点就是浮点数是有误差的,也                     就是精度溢出/精度丢失,因为在计算机程序中,浮点数的存储,存储内容,不是准确值,而是近似值  ,举例来看:console.log( 0.1 + 0.2 == 0.3 ),这个                     ==两边是否相等了?答案肯定是否定的,原因如下:浮点数因为存储方式的问题,直接执行运算或者比较,会造成精度溢出或者精度丢失的现象,造                        成执行的误差,我会将浮点数,转化为 高精度浮点数 , 在进行运算,会避免这样的问题发生

 
    NaN:则是不规范的数值,像123ab,这种则是NaN。
 
  接下来咋们来看他们之间的转化是如何转化的。
  
  1.其它数据类型转化为布尔数据类型
    1-1:自动转化,只有在执行if判断的时候,程序会自动把其它数据类型转化为布尔数据类型,转化原则是:0," ",undefined,null,NaN,只有这五                         个数值转化为false,其他所有的全是转化为true。
    1-2:强制转化,就是把相应变量或者数值前加上Boolean(数值/变量),即可转化为为布尔类型,转化原则了,也自动转化是一样的。
 
  2.其它数据类型转化为字符串数据类型
    2-1:自动转化,只有在执行字符串拼接的时候,+两侧的数值会自动转化为字符串,转化原则是:布尔值 true  ---> 字符串 'true',布尔值 false ---> 字                         符串 'false',undefined ---> 字符串 'undefined',unll ---> 字符串 'null',数值 ---> 将数值解析转化为 对应的 纯数字的字符串

      2-2:强制转化,就是把相应变量或者数值前加上String(数值/变量),即可转化为为字符串类型,转化原则了,也自动转化是一样的。
 
  3.其它数据类型转化为数值类数据类型
    3-1:自动转化,只有在执行数学运算的时候,程序会自动转化,转化原则为,布尔类型:true-->1,false-->0;null-->0;undefined-->0;字符串的                             话,分为两种,一是纯数值类型的直接转化为数值,而是不符合数字规范的则转化为NaN,
    3-2:强制转化,第一种就是把相应变量或者数值前加上Numble(数值/变量),即可转化为为字符串类型,转化原则与自动转化原则相同
            第二种是把相应变量或者数值前加上parseInt(数值/变量),是获取变量或者数据的整数部分
            第三种则是把相应变量或者数值前加上parseFloat(数值/变量),是获取整数,浮点数,全部都获取
 
 
 
 
 
 
 
 
 
 
 
 
 
 

关于JS的数据类型与转化(自动与强制)的更多相关文章

  1. js 六种数据类型的区别及bool 转换判断

    一.bool型转换判断: 1.true 和 1 比较是相同,false 和 0 比较是相同(是 “==” 比较),因为内部会实现数据类型的 转化,将true 转换成1,将false 转换成0, js ...

  2. JS的数据类型(包含:7种数据类型的介绍、数据类型的转换、数据类型的判断)

    前言 最新的 ECMAScript 标准定义了JS的 7 种数据类型,其中包括: 6 种基本类型:Boolean.Null.Undefined.Number.String.Symbol (ECMASc ...

  3. JavaScript知识 一、JS的数据类型

    一.JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined.他只有一个值:undefined.如果一个变量被定义但是没有给他赋值,那么这个时候系统会默认给这个变量赋值为u ...

  4. JS基本数据类型和引用数据类型的区别及深浅拷贝

    前言 首先我们先来了解一下什么叫栈堆,基本数据类型与引用数据类型 1.栈(stack)和堆(heap)stack为自动分配的内存空间,它由系统自动释放:而heap则是动态分配的内存,大小也不一定会自动 ...

  5. JS简单数据类型

    JS数据类型 在计算机中,不同的数据所需要占用的空间是不同的,为了便于把数据分析称所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型 简单数据类型 简单数据类型 说明 默认值 Numb ...

  6. js之数据类型(对象类型——构造器对象——对象)

    JavaScript中除了原始类型,null,undefined之外就是对象了,对象是属性的集合,每个属性都是由键值对(值可以是原始值,比如说是数字,字符串,也可以是对象)构成的.对象又可分为构造器对 ...

  7. JS中数据类型及原生对象简介

    js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器 ...

  8. 每日学习心得:Js基本数据类型常用方法扩展

    2014-02-17 前言: 节后的第一周上班,整个状态调整的还不错,已完全进入正常的工作状态.这一周主要还是对年前项目存在的一些问题进行完善.修整,基本上没有做大的改动.这里就把项目中经常用到的一些 ...

  9. Nightwatch.js – 轻松实现浏览器的自动测试

    Nightwatch.js 是一个易于使用的,基于 Node.js 平台的浏览器自动化测试解决方案.它使用强大的 Selenium WebDriver API 来在 DOM 元素上执行命令和断言. 语 ...

随机推荐

  1. elasticsearch用法

    基本原理 搜索引擎的索引 倒排序 由value查找key 数据库的索引 由key查找value 用于解决分库分表后的排序分页 like查找 性能问题 日志库的全文搜索 spring集成时使用的不是re ...

  2. 吴裕雄--天生自然python学习笔记:Python3 OS 文件/目录方法

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...

  3. 别恐慌,大众关心的人工智能问题学界都在努力求解——我眼中的AAAI 2015大会

    2015大会" title="别恐慌,大众关心的人工智能问题学界都在努力求解--我眼中的AAAI 2015大会"> 作者:微软亚洲研究院副研究员 黄铂钧 今年是美国 ...

  4. 向MyEclipse的项目中导入js文件时,出现小红叉

    这个问题困扰我很久.刚开始时,也没有解决,因此也在网上寻找解决方法,还是没能解决.最近做项目时再一次出现了这样的问题,于是决定还是再找找办法.在此,分享一下自己的解决方法,给正处于痛苦中的童鞋们带来解 ...

  5. 使用Commons Logging

    Commons Logging 和Java标准库提供的日志不同,Commons Logging是一个第三方日志库,它是由Apache创建的日志模块,需要导入commons-logging-1.2.ja ...

  6. 项目搭建到Linux--实用笔记

    项目搭建到Linux--实用笔记 1.启动redis 目录  /usr/local/redis/bin    (我自己的目录)             启动 ./redis-server redis. ...

  7. java使用jackson生成和解析JSON

    java使用jackson生成和解析JSON 1.导包 2.生成json和解析json package test; import com.fasterxml.jackson.core.JsonProc ...

  8. shell知多少?

    Shell字面理解就是个"壳",是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用户输入的命令翻译给系统执行.Linux中的shell与Windows下的DOS一样,提 ...

  9. ES查询实例

    注:转载自https://www.cnblogs.com/yjf512/p/4897294.html 作者:叶剑锋 elasticsearch 查询(match和term) es中的查询请求有两种方式 ...

  10. 二十一世纪计算 | John Hopcroft:AI革命

    编者按:信息革命的浪潮浩浩汤汤,越来越多的人将注意力转向人工智能,想探索它对人类生产生活所产生的可能影响.人工智能的下一步发展将主要来自深度学习,在这个领域中,更多令人兴奋的话题在等待我们探讨:神经网 ...