【学习笔记06】JavaScript数据类型自动转化

一、数据类型的转化

1、原理
  1. JavaScript是一门弱类型计算机语言
  2. 所谓的弱类型计算机语言,指的是JavaScript这门语言语法结构比较松散
  3. 不如强类型的计算机语言语法结构严谨
2、解释说明
1、定义变量时,强类型计算机语言会先定义变量,设定变量储存数据的数据类型,再向变量中赋值存储的数据 
   简单说来:也就是强类型计算机语言变量的定义分成两步
            第一步:定义变量设定数据类型
            第二步:向变量中存储数据
            如果赋值的数据和变量设定的数据类型不符合,不能向变量中赋值数据

2、定义变量时,弱类型计算机语言,对于变量储存数据的数据类型没有任何的限制
   简单来说:也就是一个变量中可以存储任意类型的数据
            也就是弱类型计算机语言,可以在声明变量时,同时给变量赋值存储的数据,在变量中可以存储任意类型的数据
3、总结

1.在计算机程序中,有些计算机程序执行时,需要指定的数据类型参与程序执行
2.弱类型计算机员中,变量可以存储任意类型的数据
3.在程序执行时,需要将变量中存储的数据类型转化为指定的数据类型,才能让程序正确执行

二、数据类型自动转化

方式 
    1、自动转化 / 隐式转化
       程序执行时,自动完成的数据类型转化 
    2、强制转化 
       程序员人为完成的数据类型转化 
关键点
    1、什么时候转化
    2、转化原则
(一)自动转化为字符串类型

1、什么时候转化

  • 字符串拼接时,其他数据类型转化为字符串类型
  • 理论上,执行字符串拼接时,+(加号)两侧都应该是字符串类型
  • 如果是其他数据类型,需要先转化为字符串类型,再执行字符串拼接操作

2、转化原则

  • 将数据转化为对应的字符串内容
    // 布尔类型
    // 1 将布尔类型true转化为字符串类型true
    // 2 再和字符串'北京'进行拼接操作 
    // 3 拼接结果是'北京true'
    console.log( '北京' + true ) ;        //北京true
    console.log( '北京' + false ) ;       //北京false

    console.log( '北京' + 100 ) ;         //北京100
    console.log( '北京' + 100.123 ) ;     //北京1100.123

    // 和字符串'北京'进行字符串拼接操作
    console.log( '北京' + 2e3 ) ;         // 将 2e3 解析为对应的数值2000   北京2000
    console.log( '北京' + NaN ) ;         //北京NaN

    console.log( '北京' + null ) ;         //北京null
    console.log( '北京' + undefined ) ;    //北京undefined

在这里插入图片描述

(二)自动转化为数值类型

1、什么时候转化:算数运算时

  • 执行算数运算时, 运算符两侧理论上应该都是数值类型
  • 如果不是数值类型,需要先转化为数值类型,再执行运算

2、转化原则

  • 转化为1:true
  • 转化为0:false 、null 、’ ’ 、 ’ ’
  • 转化为对应的数值:字符串内容符合数值语法( 整数、浮点数、科学计数法 )
    =转化为NaN:undefined(字符串内容不符合数值语法),运算结果是NaN
1、转化为1
// true ---- 数值1
console.log( 100 - true );    //99
2、转化为0
	// false ---- 数值0
	console.log( 100 - false );   //100

	// null ---- 数值0
	console.log( 100 - null );    //100

	// 空字符串 ---- 数值0
	console.log( 100 - '' );      //100
	
	// 字符串内容只有空格 ---- 数值0
	console.log( 100 - '  ' );   //100

在这里插入图片描述

3、转化为对应的数值
	// 1、字符串的内容,也就是定界符中的内容 
	// 2、是不是符合数值的语法形式 
	// 3、如果符合,就转化为对应的数值
	// 4、字符串'100'内容,符合数值语法规范转化为数值100 
    console.log( 100 - '100' ) ;       //  0
    console.log( 100 - '100.123' ) ;   //  -0.12300000000000466
    console.log( 100 - '2e3' ) ;       // -1900

在这里插入图片描述
注意:如果是+加号,有字符串参与执行的是字符串拼接,不是加法运算

	// 执行字符串拼接操作,不是执行加法运算
	console.log( 100 + '100' ) ;   //100100
4、转化为NaN
    // 1、undefined准化为数值类型,转化结果是NaN
    // 2、执行100 - undefined操作,也就是100 - NaN操作 
    // 3、有NaN参与的运算,执行结果还是NaN
    console.log(100 - undefined);    

    // 1、字符串'北京'转化为数值类型,转化结果是NaN
    // 2、执行100 - '北京'操作,也就是100 - NaN操作
    // 3、有NaN参与的运算,执行结果还是NaN 
    console.log(100 - '北京');  
    console.log(100 - '100a');  

在这里插入图片描述

(三)自动转化为布尔类型

1、什么时候转化:if()语句 逻辑运算符 三元运算符
2、转化原则

  • false:0、0.0000 、’ ’ 、null、undefined、NaN
  • true:其他所有情况都是转化为 true
1、转化为 false
		// 转化为 false 的情况
        if( 0 ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

        if( 0.0000 ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

        if( NaN ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

        if( undefined ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

        if( null ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

        if( '' ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

在这里插入图片描述

2、转化为 true
// 转化为 true 的情况
        if( '  ' ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

        if( 1 ){
            console.log( '()中表达式结果转化为 true 执行的程序' );
        }else{
            console.log( '()中表达式结果转化为 false 执行的程序' );
        }

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值