* { font-family: PingFang, Monaco }

JS里的六大简单数据类型

  • string 字符类型
  • number 数字类型
  • boolean 布尔类型
  • symbol ES6语法新增
  • undefined 声明了变量但未给值
  • null 空数据

JS里的负责数据类型

  • object数据类型,包括JavaScript数组,正则都是obj类型

默认数据转化

Other => Bool

  • 转布尔

    • 1、像if-else这样的表达式
    • 2、boolean()方法显式的转换
  • 9种其他值转换后对于的假值
    • 1、""
    • 2、''
    • 3、``
    • 4、0
    • 5、-0
    • 6、NaN
    • 7、false
    • 8、null
    • 9、undefined

Other => Number

  • 转数字

    • 1、Number(val)方法

      • val如果为布尔值,真假则会被转换为1和0
      • val如果是数字,那就是简单的传入和返回
      • val如果是null,则返回0
      • val如果是undefined,则返回NaN
      • val如果是字符串则全数字转数字,注意进制,空串转为0,非全数字转为NaN
    • 2、parseInt(val)
      • 传入的参数,若是字符串,则从第一个字符开始检索,保留到非数字,例如paserInt('1234abcd5')结果为1234
      • 若参数为数字,则会看是否为小数,若为小数则会保留整数。
      • ES5还提供第二个参数,第二个参数指定了,传入的参数为多少进制的数字,输出的数字都是十进制
    • 3、parseFloat(val)
      • 该参数只解析十进制数,没有第二个参数
      • 该方法为保留尽可能多的数值,例如123hello会被转换为123
      • 该方法会将参数转换为小数
    • 4、静态方法,该方法可以直接调用
      • Number.isInteger(val)判断一个值是否为整数,3和3.0是同一个值,且该方法不会对参数进行自动类型转换,所以Number.isFinite('23');的结果为false
      • Number.isFinite(val)如果参数是数字,结果为ture,该方法不会自动类型转换
    • 5、实例方法,该方法由实例方法调用
      • toFixed()该方法按照指定的小数位进行四舍五入的字符串表示,这个方法的结果类型为字符串,参数为保留小数的个数
      • toExponential()返回四舍五入后的指数表示法,参数表示转换后的小数位数
      • toPrecision()接收一个参数,即表示数值的所有数字位数,不包括指数部分,自动调用toFiexd()或toExponential(),参数为1-21,不传参或者为undefined则相对于调用toString方法

Other => String

  • 转字符串

    • toString方法

      • null和undefined并不能通过toString()函数来转换成相应的字符串,参数为转换成几进制
    • 利用+运算符和字符串进行运算(主要方法)
    • 通过String()方法来进行转换

symbol防止属性名冲突

默认的类型转换

  • 1、隐形转换

    • 加号运算符的式子中,有字符串则变成字符串,没有字符串但不全为数字则为NaN,布尔值会转为1和0,全为数字则得出Number类型
    • 除了加号的其他运算符,如减号-,乘号*,除/,求余%,都会将数据转换为数字类型
    • 当预期为布尔值的时候,会将前面的九种数据类型转换为false
    • 转换技巧
      • 转成字符串 a = "" + 数据
      • 转换布尔 !数据类型
      • 转换数值 数据类型*1
    var sum = 1 + 1; // 结果为2,因为两者都是Number类型的数据
var sum = 1 + true; // 结果为2,因为Number + true,布尔会被转化为1和0
var sum = 1 + null; // 结果为1,因为Number + null,没有字符串,且我希望得到数值结果,所以null会转为Number,null转为Number的结果为0,所以1+0的结果为1
var sum = true + null; // 结果为1,因为布尔转为1,null转为0,所以1+0为1
var sum = "" + 任意数据类型; // 结果都为字符串,如果是利用toString()转换则不能转null和undefined!注意这点。
    var sum = 任意数据类型 * 1; // 如果能计算出来,则为具体数值,如果算不出来,例如undefined和1进行运算这样的得不出来结果,就会得到NaN
// NaN 的意思是Not a Number,意思是我想要得到一个数字,但是实际得到的却不是一个数字,就会得到NaN,NaN的数据类型也是Number

JS里默认和常用转换的更多相关文章

  1. Javascript中双等号(==)隐性转换机制 JS里charCodeAt()和fromCharCode()方法拓展应用:加密与解密

    Javascript中双等号(==)隐性转换机制   在Javascript中判断相等关系有双等号(==)和三等号(===)两种.其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否 ...

  2. js变量在属性里的写法 常用mark 多个DL遍历添加一个父级DIV

    标记用 js变量比如url链接一般都是a里面的href属性值 在js里单引号链接 以后再忘记就能有地方找了 例子: /* 添加1200 居中div 包裹 获取元素集合 上层元素100% * @ele ...

  3. JS里的居民们7-对象和数组转换

    编码 学习通用的数据用不同的数据结构进行存储,以及相互的转换 对象转为数组: var scoreObject = { "Tony": { "Math": 95, ...

  4. ffplay的快捷键以及选项 FFmpeg 基本用法 FFmpeg常用基本命令 ffmpeg常用转换命令,支持WAV转AMR

    ffmpeg -i 32_mkv_h264_718x480_ac3.mkv  -codec copy -bsf:v h264_mp4toannexb  -f mpegts xx.ts ./ffmpeg ...

  5. js里cookie操作

    原生js操作cookie 创建和存储 cookie 在这个例子中我们要创建一个存储访问者名字的 cookie.当访问者首次访问网站时,他们会被要求填写姓名.名字会存储于 cookie 中.当访问者再次 ...

  6. JS里设定延时:js中SetInterval与setTimeout用法

     js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...

  7. 前端要革命?看我在js里写SQL

    在日新月异的前端领域中,前端工程师能做的事情越来越多,自从nodejs出现后,前端越来越有革了传统后端命的趋势,本文就再补一刀,详细解读如何在js代码中执行标准的SQL语句 为什么要在js里写SQL? ...

  8. 正则表达式,js里的正则应用

    我爱撸码,撸码使我感到快乐!大家好,我是Counter.好吧已经到凌晨了,其实还是蛮困的,体力不支了,想了想还是把今天任务结束掉吧,为期5天,又重新把JavaScript以及jQuery给大致过了一遍 ...

  9. canvas里设置width和css里设置width和js里设置width的区别

    canvas.width 和 它的style.width是不一样的: canvas是个画布,有他自己的宽和高(默认是没有单位的纯数字),就是canvas.width和canvas.height的宽和高 ...

随机推荐

  1. IO中同步异步,阻塞与非阻塞 -- 原理篇

    再补一篇高手写的理论分析,便于更深刻理解 转自:http://blog.csdn.net/historyasamirror/article/details/5778378 ============== ...

  2. MySQL管理之道,性能调优,高可用与监控(第二版)pdf下载

    MySQL管理之道,性能调优,高可用与监控(第二版) 书中内容以实战为导向,所有内容均来自于笔者多年实践经验的总结和新知识的拓展,同时也针对运维人员.DBA等相关工作者会遇到的有代表性的疑难问题给出了 ...

  3. 小迪安全 Web安全 基础入门 - 第三天 - 抓包&封包&协议&APP&小程序&PC应用&WEB应用

    一.抓包工具 1.Fiddler.Fiddler是一个用于HTTP调试的代理服务器应用程序,能捕获HTTP和HTTPS流量,并将其记录下来供用户查看.它通过使用自签名证书实现中间人攻击来进行日志记录. ...

  4. Git的基本使用(只是基本使用)

    git上传 1.克隆到本地 git clone + git项目地址 2.添加文件 git add * 添加所有文件到本地仓库 3.查看状态 git status 4.标记 git commit -m ...

  5. TCP超时、ping不丢包排查

    现象就是:1. 每隔一段时间,问题服务器的公网地址不可访问,目前只开放了8080和22,这两个端口不可访问的时间是一致的,不可访问时间约在2分钟以内2. 已经建立的连接在不可访问期间不受影响,开的几个 ...

  6. .NET 云原生架构师训练营(对象过程建模)--学习笔记

    目录 UML OPM OPM优化 UML 1997年发布UML标准 主要域 视图 图 主要概念 结构 静态视图 类图 类.关联.泛化.依赖关系.实现.接口 用例视图 用例图 用例.参与者.关联.扩展. ...

  7. JAVAWEB导出word文档,遍历表格数据,导出图片

    这是写的另一个导出word方法:https://www.cnblogs.com/pxblog/p/12790904.html 本次使用的是easypoi框架 官方教程:https://opensour ...

  8. nim_duilib之msgbox用法(23)

    概述 本文将介绍 msgbox 的用法 更多用法,请参考 源码 改进了原有的xml样式 一个样式 xml结构 整体垂直布局 xml源码 demo源码下的msg/msg.xml文件内容 改为如下 注意: ...

  9. 【LeetCode】1433. 检查一个字符串是否可以打破另一个字符串 Max Difference You Can Get From Changing an Integer

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcode ...

  10. 【LeetCode】758. Bold Words in String 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...