JavaScript 数据类型转换

数据类型

<script type="text/javascript">
        /*
        数据类型指的就是字面量的类型
            在JS中一共有六种数据类型
                String 字符串
                Number 数值
                Boolean 布尔值
                Null 空值
                Undefined 未定义
                Object 对象
            
            其中String Number Boolean Null Undefined属于基本数据类型
            而Object属于引用数据类型
        */

        /*
        String字符串
            - 在JS中字符串需要使用引号引起来
            - 使用双引号或单引号都可以,但是不要混着用
            - 引号不能嵌套,双引号不能放双引号,单引号不能放单引号
        */
        var str = 'hello';

        /*
        在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义
            \" 表示 "
            \' 表示 '
            \n 表示换行
            \t 制表符
            \\ 表示\
        */
        str = "我说:\"今天\t天气真不错!\"";
        str = "\\\\\\";
        // console.log(str);

        //输出字面量 字符串str
        // alert("str");

        //输出变量str
        // alert(str);

        var str2 = "hello";
            
        str2 = "你好";
        
        str2 = 3;
    </script>
number

在JS中所有的数值都是Number类型,包括整数和浮点数(小数)
JS中可以表示的数字的最大值

Number.MAX_VALUE
1.7976931348623157e+308
Number.MIN_VALUE 大于0的最小值
5e-324

如果使用Number表示的数字超过了最大值,则会返回一个

Infinity 表示正无穷
-Infinity 表示负无穷
使用typeof检查Infinity也会返回number
NaN 是一个特殊的数字,表示Not A Number
使用typeof检查一个NaN也会返回number

Boolean

Boolean 布尔值
布尔值只有两个,主要用来做逻辑判断
true
- 表示真
false
- 表示假
使用typeof检查一个布尔值时,会返回boolean

Null和Undefined

Null(空值)类型的值只有一个,就是null

  • null这个值专门用来表示一个为空的对象
  • 使用typeof检查一个null值时,会返回object
    Undefined(未定义)类型的值只有一个,就undefind
  • 当声明一个变量,但是并不给变量赋值时,它的值就是undefined
  • 使用typeof检查一个undefined时也会返回undefined

强制类型转换

强制类型转换

  • 指将一个数据类型强制转换为其他的数据类型
  • 类型转换主要指,将其他的数据类型,转换为
    String Number Boolean
  • 将其他的数据类型转换为String

方式一:
调用被转换数据类型的toString()方法
该方法不会影响到原变量,它会将转换的结果返回
但是注意:null和undefined这两个值没有toString()方法,如果调用他们的方法,会报错

方式二:
调用String()函数,并将被转换的数据作为参数传递给函数
使用String()函数做强制类型转换时,
对于Number和Boolean实际上就是调用的toString()方法
但是对于null和undefined,就不会调用toString()方法
它会将 null 直接转换为 "null"
将 undefined 直接转换为 "undefined"

var a = 123;

        //调用a的toString()方法
        //调用xxx的yyy()方法,就是xxx.yyy()
        a = a.toString();

        a = true;
        a = a.toString();

        a = null;
        //a = a.toString(); //报错

        a = undefined;
        //a = a.toString(); //报错

        a = 123;
            
        //调用String()函数,来将a转换为字符串
        a = String(a);

        a = null;
        a = String(a);
        
        a = undefined;
        a = String(a);

        console.log(typeof a);
        console.log(a);
转换为Number

将其他的数据类型转换为Number

转换方式一:
使用Number()函数
字符串 --> 数字
1.如果是纯数字的字符串,则直接将其转换为数字
2.如果字符串中有非数字的内容,则转换为NaN
3.如果字符串是一个空串或者是一个全是空格的字符串,则转换为0

  • 布尔 --> 数字
    true 转成 1
    false 转成 0
    null --> 数字 0
    undefined --> 数字 NaN

转换方式二:
- 这种方式专门用来对付字符串
- parseInt() 把一个字符串转换为一个整数
- parseFloat() 把一个字符串转换为一个浮点数

其他进制的数字
  • 在js中,如果需要表示16进制的数字,则需要以0x开头
  • 如果需要表示8进制的数字,则需要以0开头
  • 如果要要表示2进制的数字,则需要以0b开头,但是不是所有的浏览器都支持
//十六进制
        a = 0x10;
        a = 0xff;
        a = 0xCafe;
        
        //八进制数字
        a = 070;
        
        //二进制数字
        //a = 0b10;
        
        //像"070"这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析
        a = "070";
        
        // a = parseInt(a);
        //可以在parseInt()中传递一个第二个参数,来指定数字的进制
        a = parseInt(a,10);
        
        console.log(typeof a);
        console.log(a);
转换为Boolean

将其他的数据类型转换为Boolean
使用Boolean()函数

  • 数字 ---> 布尔
    除了0和NaN,其余的都是true
  • 字符串 ---> 布尔
    除了空串,其余的都是true
  • null和undefined都会转换为false
    对象也会转换为true
var a = 123; //true
        a = -123; //true
        a = 0; //false
        a = Infinity; //true
        a = NaN; //false
        
        //调用Boolean()函数来将a转换为布尔值
        a = Boolean(a);

        a = "hello";//true
        a = "true";//true
        a = "false";//true
        a = "错误";//true
        a = " ";//true
        a = "";//false
        a = Boolean(a);
        
        a = null; //false
        a = Boolean(a);
        
        a = undefined; //false
        a = Boolean(a);
        
        a = window; //true
        a = Boolean(a);
        
        console.log(typeof a);
        console.log(a);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容