• JavaScript中的数据类型转换


    显式类型转换

    1,Number()

    • 基本数据类型
    1. 数字即本身。
    2. 字符串,如果是纯数字,则直接转化为数字;如果不是纯数字,则转换为NaN;如果是空字符串,则转化为0;
    3. 布尔值,true转化为1;false转化为0;
    4. undefined转化为NaN
    5. null转化为0
    • 引用数据类型
    1. 先调用对象的valueOf()方法,如果返回的是基本数据类型,则调用Number()方法,结束。
    2. 先调用对象的valueOf()方法,如果返回的是复合数据类型,则继续调用toString()方法,这时如果返回的是基本数据类型,则调用Number()方法,结束。
    3. 先调用对象的valueOf()方法,如果返回的是复合数据类型,则继续调用toString()方法,这时如果返回的不是基本数据类型,则报错。

    2,String()

    • 基本数据类型
    1. 数字转化为字符串。
    2. 字符串为本身。
    3. 布尔值,true转化为'true';false转化为'false';
    4. undefined 转化为 'undefined';
    5. null 转化为 'null';
    • 引用数据类型
    1. 先调用对象的toString()方法,如果返回的是基本数据类型,则调用String()方法,结束。
    2. 先调用对象的toString()方法,如果返回的是复合数据类型,则继续调用对象的valueOf()方法,这时如果返回的是基本数据类型,则调用String()方法,结束。
    3. 先嗲用对象的toString()方法,如果返回的是复合数据类型,则继续调用对象的valueOf()方法,这时如果返回的不是基本数据类型,则报错。    

     

    3,Boolean()

      只需记得几项为false的值,其他都为true。

    • +0
    • -0
    • ''
    • false
    • NaN
    • undefined
    • null

    隐式类型转换

    • 四则运算
    1. 如果是加法和字符串同时出现时,会成为字符串拼接。
    2. 如果是其他情况的+-*/,则将不是number类型的数据通过Number()转化,转化完成再进行数学运算。
    • ==
    1. 出现不同类型的数据比较,将不是number类型的数据通过Number()转换,再进行判断。
    2. 特别注意:undefined == null 返回的是true
    • 判断语句
    1. 将所有判断语句内的结果进行Boolean()转化。
    2. 三目运算符
    • 逻辑运算
    1. &&,将两边的数据进行Boolean()转换,返回从左往右第一个false的值。如果全为true,则返回最后一个值。
    2. ||,将两边的数据进行Boolean()转换,返回从左往右第一个true的值,如果全为false,则返回最后一个值。
    • Native调用
    1. console.log()会将输入调用String()方法,返回字符串。
    2. alert()会将输入调用String()方法,返回字符串。

    常见题目

    • [] + []  //''
    • [] + {}  //"[object Object]"
    • {} + []  //0,这里将{}看成了空代码块,直接无视了,变成+[]
    • {} + {}  //这里的答案在chrome和firefox中的执行结果不同,firefox会将前面的{}看成空代码块,并无视它成为+{},值为NaN;在chrome中执行,值为"[object Object][object Object]",(具资料显示,chrome用的是eval()方法进行解读的。nodejs环境中值为"[object Object][object Object]")
    • true + true  //2
    • 1 + {a:1}  //"1[object Object]"
    • undefined == null  //true
  • 相关阅读:
    Red Hat Enterprise Linux 7的新功能
    Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
    Unix/Linux环境C编程入门教程(40) 初识文件操作
    hadoop 1.2.1 安装步骤 伪分布式
    heritrix 3.2.0 -- 环境搭建
    nyoj301递推求值
    nyoj301递推求值
    luogu1962斐波那契数列
    矩阵快速幂模板
    矩阵快速幂模板
  • 原文地址:https://www.cnblogs.com/zhonghonglin1997/p/10340671.html
Copyright © 2020-2023  润新知