在我们谈到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. WebSecurityConfig

    package me.zhengjie.core.config; import me.zhengjie.core.security.JwtAuthenticationEntryPoint; impor ...

  2. C++ const成员变量和成员函数(常成员函数)

    在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定.const 可以用来修饰成员变量和成员函数. const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只 ...

  3. numpy中的ndarray与pandas中的series、dataframe的转换

    一个ndarray是一个多维同类数据容器.每一个数组有一个dtype属性,用来描述数组的数据类型. Series是一种一维数组型对象,包含了一个值序列,并且包含了数据标签----索引(index). ...

  4. C++对数组进行复制

    C++ 风格的复制操作 使用STL中的copy算法 int a[] = {1,2,3,4,5}; int b[5]; std::copy(std::begin(a),std::end(a),std:: ...

  5. ionic2踩坑之自定义插件开发及调用

    关于ionic2自定义插件开发的文章,插件怎么调用的文章,好像网上都有,不过作为一个新手来说,从插件的开发到某个页面怎么调用,没有一个完整的过程的话,两篇没有关联的文章也容易看的迷糊.这里放到一起来方 ...

  6. mongodb Map/reduce测试代码

    private void AccountInfo() { ls.Clear(); DateTime dt = DateTime.Now.Date; IMongoQuery query = Query& ...

  7. CentOS7下MySQL5.7的安装-RPM方式

    Installing MySQL on Linux Using RPM Packages 下载安装包 mysql下载地址:https://dev.mysql.com/downloads/mysql/ ...

  8. 吴裕雄--天生自然 R语言开发学习:方差分析

    #-------------------------------------------------------------------# # R in Action (2nd ed): Chapte ...

  9. 关于log4j中log4j.properties和log4j.xml的加载顺序

    如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解. log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properti ...

  10. 抛开贾跃亭!法拉第FF91能成功吗?

    在本届CES 2018上,FF 91又一次刷屏了,而且实实在在地允许试乘了. 抛开贾跃亭的因素不谈,你觉得FF 91能成功吗? 最开始知道法拉第FF91这款电动汽车的名字时,总感觉怪怪的--像是把法拉 ...