1.一元运算符+、-【将其它类型转化为number类型,相当于调用了Number()函数】
var num = +('hello')  NaN  typeof num->number
num = +('123')  123   typeof num->number
num = +('-123') -123  typeof num->number
num = -('-123') 123      typeof num->number
num = -(null)   -0      typeof num->number

2.比较运算符【==[值等]和===[全等]】
在各种数据类型之间进行比较时:
    a.null == null;undefined == undefined;  null与undefined只与自身值相等
    b.其它数据类型与number类型比较【==】时:大都是按照将其它类型转化为number类型再比较他们的值。
    c.string与boolean比较,即便看起来一样  也返回false。

3.逻辑运算符&&【逻辑与】、||【逻辑或】、!【逻辑非】
假性值:null,undefined,'',NaN,0,false 【转换为boolean类型为假】后面用‘假’表示
a.逻辑与:【&&】(不一定返回boolean类型)
    判断过程中遇‘假’,则返回该假值;否则,返回最后一个数的值【即:当该表达式作为条件判断语句条件时,
    判断条件真假过程中,只要碰到‘假’,整个表达式为假[false],则后面值不判断且不运算执行】
    
    与:【&】
    它与逻辑与【&&】所不同的是:当其作为条件判断语句条件时,
    判断条件真假过程中,当碰到‘假’时,整个表达式为假[false],但其后面值仍会判断和运算执行
b.逻辑或:【||】(不一定返回boolean类型)
    判断过程中遇‘真’,则返回该真值;否则,返回最后一个数的值【即:当该表达式作为条件判断语句条件时,
    判断条件真假过程中,只要碰到‘真’,整个表达式为真[true],则后面值不判断且不运算执行】
    
    或:【|】
    它与逻辑与【&&】所不同的是:当其作为条件判断语句条件时,
    判断条件真假过程中,当碰到‘真’时,整个表达式为真[true],但其后面值仍会判断和运算执行
c.逻辑非:【!】(返回boolean类型)
    将!后面的值转化为boolean类型,然后在取反。
    !! 取反后再取反,相当于只对类型做了Boolean类型转换。
    
    非:【!】 它和逻辑非没有太大的差别
    
4. 三目运算符:
    基本形式:变量 = 判断条件?真:假;
    真、假处可以填入各种数据类型的值【number、null、boolean、undefined、string、object、array、Function】    
    eg: var result = 5>3?666:999;  解析:5大于3条件为真,则result = 666;如果条件为假,则result = 999;

5. 将其它数据类型转换为number
1).转换:+a,-(-a), Number(a)
    如果是Boolean值,true和false值将分别被转换为1和0。
    如果是数字值,只是简单的传入和返回。
    如果是null值,返回0。
    如果是undefined,返回NaN。
    
    如果是字符串:
       a. 如果字符串中只包含数字时,将其转换为十进制数值,忽略前导+和0
       b. 如果字符串中包含有效浮点格式,如“1.1”,将其转换为对应的浮点数字,忽略前导+和0
       c. 如果字符串中包含有效的十六进制格式,如“0xf”,将其转换为相同大小的十进制数值
       d. 如果字符串为空【" "】,将其转换为0
       e. 如果字符串中包含除上述格式之外的字符,如“123aaa”,则将其转换为NaN。

true:  1
        false:  0
        undefined:  NaN
        null:  0
        " ":  0

2).解析: parseInt():将字符串转换为整数
        a. 从字符串第一个数【+、-、空格只有出现在字符串最前面不会被当做为非数字字符】开始直到非数字字符或解析完后续字符串结束
        b. parseInt() 转换过程中无法解析八进制字符串但可以解析十六进制字符串   十六进制parseInt('0xb'); 11  、 八进制数值当做十进制处理
        c. 其它情况以及用parseInt() 转换空字符串会返回NaN。

parseFloat():将字符串转换为小数
            a. 从第一个字符(位置0)开始解析每一个字符。也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。
            b. 如果字符串中包含的是一个可解析为正数的数(没有小数点,或者小数点后都是零),parseFloat() 会返回整数。
            c. parseFloat() 转化过程中无法解析八进制和十六进制字符串   十六进制parseInt('0xb'); 0  、  八进制数值当做十进制处理

区别:parseFloat() 所解析的字符串中第一个小数点是有效的,而parseInt() 遇到小数点会停止解析,因为小数点并不是有效的数字字符。

true:NaN
        false:NaN
        undefined:NaN
        null:NaN
        " ":  NaN

6. 将其它数据类型转换为boolean
1) !!a,Boolean(a)

number;非0/+(-)Infinity(无穷的)     true
        0/NaN           false

string:非空字符串       true
        空字符串        false
        null            flase
        undefined       flase

7. 将其它数据类型转换为string
1)toString(param)  不能用于undefined和null,他们二者没有toString方法;其可以带参数param:
【2:数值转化为二进制字符串;8:数值转化为八进制字符串;16:数值转化为十六进制字符串】
    //3.toString()程序无法辨别.属于3.还是用来调用.toString()方法的【程序会报错】
        console.log(3.toString());
    //加了括号和使用..后可以明确.所起到的对应作用意义 【程序正常执行产生结果】
        console.log((3).toString());
2)String()
    可以转化null和undefined,将其转化为:'null','undefined';
3)使用字符串拼接的形式来进行转化:
    ' '+a ->  'a'
    '123'+'456' -> '123456'
    
8. 特别注意:加法运算【+】
多个数相加时:
a.当操作数不存在String和Object类型,则先将它们转换为Number类型,然后再进行计算
    
b.当操作数中有一个或多个为String类,其它数中不含对象类型时,都要转换为String类型,然后再进行拼接操作
    
c.当操作数中有为对象类,如果该对象既重写toString,又重写了valueOf方法,先调用valueOf方法获
取返回值,将该返回值和其它操作数进行运算。
如果该对象没有重写valueOf方法,将调用toString方法【对象默认调用的方法】获取返回值,将该返回值和其他操作数进行运算。

js运算符及数据类型转换(二)的更多相关文章

  1. js | JavaScript中数据类型转换总结

    转载 在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: var a = “123”; a = Number(a); ...

  2. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  3. 02.JS数据类型与数据类型转换

    前言:   学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 (05)数据类型 (06)数据类型转换5.数据类型——datatype  数据 ...

  4. 简谈-Python的输入、输出、运算符、数据类型转换

    输出: 格式化输出: 看到了 % 这样的操作符,这就是Python中格式化输出. 换行输出: 在输出的时候,如果有 \n 那么,此时 \n 后的内容会在另外一行显示 输入: 在python2.7当中, ...

  5. JS 里的数据类型转换

    JS的数据类型转换 一.js中的数据类型Js中的数据类型一共有六种,即number,string,boolean,underfine,null,object. 1.Number Number数据类型指 ...

  6. js注释和数据类型转换

    单行注释 用来描述下面一个或多行代码的作用 // 这是一个变量var name = 'hm'; 多行注释 用来注释多条代码 /*var age = 18;var name = 'zs';console ...

  7. node.js关于传送数据的二三事

    配置好node环境后 书写代码 目录结构: . 代码: <!DOCTYPE html> <html lang="en"> <head> < ...

  8. 算数运算符and数据类型转换

    一元(单目)运算符有且只有一个运算参数,二元(双目)运算符有且只有两个运算参数. 二元运算符:+(加).-(减).*(乘)./(求商).%(求余) 一元运算符:+(正),-(负),++(自增),--( ...

  9. JS 变量的数据类型转换

    变量的类型转换,一般情况是JS自动转换的,但也有些时候需要手动转换. 1.其它类型转成布尔型 函数和方法的区别 Boolean(a)  //函数是可以独立使用的 document.write(a)   ...

随机推荐

  1. [转]OpenTK学习笔记(1)-源码、官网地址

    OpenTK源码下载地址:https://github.com/opentk/opentk OpenTK使用Nuget安装命令:OpenTK:Install-Package OpenTK -Versi ...

  2. 让ie10/11支持非单页面的vue/es6

    为了满足某些客户的要求,最近让前端同学实现了ie 10(windows 7)/11(windows 10)支持多页面的vue/es6,基本参考如下: https://www.cnblogs.com/n ...

  3. spring-boot 知识集锦

    1.spring-boot项目在外部tomcat环境下部署 https://blog.csdn.net/james_wade63/article/details/51009423 https://bl ...

  4. patchUpload.vue?5e29:406 Uncaught (in promise) DOMException: Failed to execute 'readAsArrayBuffer' on 'FileReader': The object is already busy reading Blobs.

    patchUpload.vue?5e29:406 Uncaught (in promise) DOMException: Failed to execute 'readAsArrayBuffer' o ...

  5. Gradle 教程: 教你配置全局国内仓库,解决新建项目卡顿,下载构建慢等问题

    想必各位从Maven 转过来的大佬们,对于maven中配置国内仓库的方法还记忆深刻.通过/用户目录下/.m2/settings.xml 局部配置或者修改全局配置.不过没有接触过maven 也不要紧,可 ...

  6. 【C++】C++中的异常解析

    异常是程序在执行期间产生的问题.C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作. 异常提供了一种转移程序控制权的方式.C++ 异常处理涉及到三个关键字:try.catch.throw ...

  7. mvn命令修改pom打包的版本号

    在java项目中打包经常需要修改镜像的版本号.可以使用如下命令 mvn versions: // 如果要打包使用人如下命令,打印详细信息使用 -X mvn clean deploy -e -Dskip ...

  8. 仿简书MarkDown编辑器可同步滚动

    模仿简书的MarkDown编辑器,使用Angular8写的示例 1.支持同步滚动 编辑的过程中,右侧预览界面会同步滚动.滚动右侧预览界面,左侧编辑区也会同步滚动哦 2.支持语法高亮 如下: using ...

  9. vue双循环或者多循环作用于同一元素时,在外套template标签

    如图,两个v-for,都是要循环创建tr标签.同理,v-if也是套template

  10. 大数据分析常用去重算法分析『Bitmap 篇』

    大数据分析常用去重算法分析『Bitmap 篇』  mp.weixin.qq.com 去重分析在企业日常分析中的使用频率非常高,如何在大数据场景下快速地进行去重分析一直是一大难点.在近期的 Apache ...