数据转换和运算符和结构

思维导图


数据类型转换

1.其他数据类型转化成数值类型

  1. Number()==>把变量看作一个整体 如果其中有一个不是数字,则返回NaN,唯一一个可以转化布尔类型的 true-》1 false-》0
  2. parseInt()==>把变量分成一个一个的 从左向右 一个一个的转 直到遇到不能转的 就停止 输出前面转好的,如果全都不能转,则直接输出NaN,如果第一个就不能转,直接输出NaN,遇到小数点,停止,布尔类型的 true-》NaN false-》NaN
  3. parseFloat()==>把变量分成一个一个的 从左向右 一个一个的转 直到遇到不能转的 就停止 输出前面转好的,如果全都不能转,则直接输出NaN,如果第一个就不能转,直接输出NaN,布尔类型的 true-》NaN false-》NaN
  4. 除+之外的运算符 - * /js 隐式转 默认使用number方法 整体转 遇到不能转的则会输出nan
  5. 输出nan的原因是,转为数值类型,而转化不成功 转的是一个非数值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 数据类型的转换
        // 1.Number(你要转化的数据);把要转化的数据当作一个整体看待   true==>1 false==>0

        // 把要转化的数据当作一个整体,只要有一个不能转 则整体输出nan  但可以true==>1 false==>0

        var test = '100abc';
        console.log(test);
        var res =  Number(test);
        var flag = Number(true);

        console.log(typeof res);
        console.log(res);
        console.log(flag);
        // parseInt(你要转化的数据);把要转化的数据切成一位一位的,从左到右开始转 若能转 就输出 遇到不能的就停止  遇到小数点就停止 如果全部不能转,则输出nan   如果第一个就不能转 则直接输出nan
        //  true==>nan false==>nan
        var test = '100abc';
        console.log(test);
        var res =  parseInt(test);
        var flag = parseInt(true);

        console.log(typeof res);
        console.log(res);
        console.log(flag);
 

        // parseFloat(你要转化的数据);把要转化的数据切成一位一位的,从左到右开始转 若能转 就输出 遇到不能的就停止  本身就转小数    如果全部不能转,则输出nan   如果第一个就不能转 则直接输出nantrue==>nan false==>nan
        var test = '100abc';
        console.log(test);
        var res =  parseInt(test);
        var flag = parseInt(true);

        console.log(typeof res);
        console.log(res);
        console.log(flag);
        // - 背后自动给你转化
        // 遇到非加法 如果左右有一个数值,那么另一个会自动转为数值类型   如果转不了 就输出 nan   整体转 不会跳着转  默认使用number();
        var action = '666' - 100;
        console.log(action);//结果为566 背后默默转使用的是number方法进行转化 所以,只有全部都是数字 才可以成功转化 只有有一个不是数字类型则会输出nan

        var num1 = prompt("请输入第一个数字");
        var num2 = prompt("请输入第二个数字");
        // 如果num1这个变量,接下来需要使用字符串类型的,则需要在使用运算的时候,转化 使用一下列子
        alert(parseInt(num1)+parseInt(num2));
    </script>
</body>
</html>

2.其他数据类型转化为字符串类型

  1. String()==》可以转所有类型
  2. toString() ==》不能转undefined null

要转化的变量.toString()

    • 两边都是布尔类型,则先转数值类型相加 两边有其一为字符串则拼接 拼接也是转字符串类型的一种
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            1.String('你要转化的数据')
                可以转任意类型
                返回字符串
            2.toString()
                要转的.tostring()
                只能转数值 布尔 
                不能转null和undefined
            3."+"
                如果加号左右只有有一个为字符串 则结果为字符串
        
        */
// 1.String()
        //  数值
        var num1 = 100;
        console.log(typeof num1,num1);
        var num2 = String(num1);
        console.log(typeof num2,num2);
        var num3 = 100.12;
        console.log(typeof num3,num3);
        var num4 = String(num3);
        console.log(typeof num4,num4);
        // 布尔类型
        var flag = true;
        console.log(typeof flag,flag);
        var res = String(flag);
        console.log(typeof res,res);
        // null
        var null1 = null;
        console.log(typeof null1,null1);
        var null2 = String(null1);
        console.log(typeof null2,null2);
        // undefined
        var undefined1 = undefined;
        console.log(typeof undefined1,undefined1);
        var undefined2 = String(undefined1);
        console.log(typeof undefined2,undefined2);
// 2.toString()
        //  数值
        var num1 = 100;
        console.log('2',typeof num1,num1);
        var num2 = num1.toString();
        console.log(typeof num2,num2);
        var num3 = 100.12;
        console.log(typeof num3,num3);
        var num4 = num3.toString();
        console.log(typeof num4,num4);
        // 布尔类型
        var flag = true;
        console.log(typeof flag,flag);
        var res = flag.toString();
        console.log(typeof res,res);
        // 以下不可以转
        // null
        /* var null1 = null;
        console.log(typeof null1,null1);
        var null2 = null1.toString();
        console.log(typeof null2,null2); */
        // undefined
        /* var undefined1 = undefined;
        console.log(typeof undefined1,undefined1);
        var undefined2 = undefined1.toString();
        console.log(typeof undefined2,undefined2); */
    

    

// 第三种   +
    alert(true+true);//两边都是布尔类型 那么会把两边的都转为数值类型,然后相加
    alert('hell'+true);//有一个为字符 则结果为字符
</script>
</body>
</html>

3.其他类型转化为布尔类型

  1. Boolean()
  2. 在js中只有六种情况是假的==》0 0.0 false ‘’ null undefined
  3. [] {} 只有在js中不是空 因为null是对象中的空 所以其他情况都是真
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // number


        // string

        // boolean

        // null==》空对象只有null这一种 他是假的则[]{}为真

        // undefined

        // object

        // 假的==》0 0.0 '' false null undefined 

        /* 
            方法:Boolean()

        
        */
       console.log(Boolean(0));
       console.log(Boolean(0.0));
       console.log(Boolean(''));
       console.log(Boolean(false));
       console.log(Boolean(null));
        var test ;
       console.log(Boolean(test));
    //    js仅有六种是假的
    // 0 0.0 false '' null undefined
    // [] {} 在js中是真的,在其他中是假的
    var test1 = [];
    console.log(test1);//在js中是真的
    var test2 = {};
    console.log(test2);//在js中是真的
    </script>
</body>
</html>

运算符

1.数学运算符

± / * % 幂**
小数点算数 一定要检查一遍 因为0.1+0.2!=0.3 而是0.3000004 因为js脚本语言编译不严谨
个十百 》运用%和/
小时分钟秒
》运用%和/

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // **幂  + - * / %

        console.log(1+1);//2
        console.log(1-1);//0
        console.log(1*1);//1
        console.log(1/1);//1
        console.log(10%3);//1
        console.log(10**3);//1000
        console.log(10e3);//10*10的三次方
        // 小数点算数一定要看一下   语言不严谨 脚本解释型语言
        console.log(.1+.2);//0.30000000000000004不严谨
//提示除法取余
// 873
// 提个十百
        var  num = 873;
        var res =parseInt(num /100) ;
        console.log('百位',res);
        var ten =parseInt( num % 100 / 10);
        console.log('十位',ten);
        var ge = num  % 10;
        console.log("个位",ge)
//16953秒
//多少小时多少分钟多少秒
// 1m 60 1h 3600 秒
// / %parseInt
        var miao = 16953;
        var h =parseInt(miao / 3600) ;
        console.log('小时',h)
        // var m =parseInt((miao - h * 3600) / 60);
        var m = parseInt(miao % 3600 /60)
        console.log('分钟',m)
        var s = parseInt(miao % 3600 % 60)
        console.log('秒',s)
        console.log(`${h}小时:${m}分钟:${s}`);

        // 数字 整数求个位 那就是求余10
        // 时间 多少秒 那就是求余60
        // 语法错误
    </script>
</body>
</html>

2.赋值运算符

复合型赋值运算符
+= -= *= /= **= %=

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 复合型赋值运算符
        // += -= *= /= %= **=
        var num1 = 100;
        num1 += 100;//num1=num1+100
        num1 -= 100;//num1=num1-100
        num1 *= 100;//num1=num1*100
        num1 /= 100;//num1=num1/100
        num1 %= 100;//num1=num1%100
        num1 **= 2;//num1=num1 ** 2
        console.log(num1);
    </script>
</body>
</html>

3.比较运算符

= < <= ==[等于数值] !=【不等于】 =【等于数值和类型】 !【全都不相等】
// NaN 非数字
// 齐与任意数字运算 结果一定是NAN
比较运算符的结果 一定是布尔类型 对还是错

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 比较运算符的结果 一定是布尔类型 true false
        // 等于 不等于 大于 小于 大于等于 小于等于

        // ==比较值是否相等 ===比较值和类型是否相等 != !==都不全等与 > < >= <= 
        var num1 = 10;
        var num2 = 20;
        var num3 = '10';
        
        console.log(num1 == num3);//true
        console.log(num1 === num3);//false因为类型不同
        
        console.log(num1 == num2);//false
        console.log(num1 != num2);//true
        console.log(num1 >= num2);//false
        console.log(num1 <= num2);//true
        console.log(num1 > num2);//false
        console.log(num1 < num2);//true

        console.log(undefined==null);//true
        // 因为undefined 是派生子null
        console.log(undefined=== null);//false   因为类型不同
        var res = .1+.2;
        console.log(.3 == res);//false

        // NaN 非数字
        // 齐与任意数字运算 结果一定是NAN
        console.log(NaN == NaN);//false
        console.log(NaN !== NaN);//true

    </script>
</body>
</html>

4.逻辑运算符

逻辑与&& 两边全都的为真才为真
逻辑或|| 两边只要有一个为真,则为真
逻辑非 ! 真反假 假反真
逻辑运算 的结果 不一定全是true false
&&

  1. 全都是真的,则输出最后一个数
  2. 不全都是真,则从左到右 ,遇到假的,就输出为假的数值

||

  1. 全都是假的,则输出最后一个数
  2. 不全都是假,则从左到右 ,遇到真的,就输出为真的数值

例子:==》石头剪刀布 闰年
//隐式转换
// 短路运算 && 遇到假 停止向右
// 短路运算 || 遇到真 停止向右

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 逻辑与&&【要求左右两边全都满足组】  逻辑非! 逻辑或||【要求左右两边只有一i个满足就可以,全都不满足就是假的】

        var height = 181;
        var edu = '硕士';
        var beauty = 80;
        console.log(height>=180 && edu == '硕士'  && beauty >= 80);//true

        // 逻辑或||
        var height = 181;
        var edu = '家里蹲';
        var beauty = 80;
        console.log(height>=180 || edu == '硕士'  || beauty >= 80);//true



// 逻辑非! 真的变成假的 假的变成真的
        console.log(!5>4);

        // 逻辑运算符的结果不一定是布尔类型



        //隐式转换
         // 短路运算 && 遇到假 停止向右 
        // 短路运算 || 遇到真 停止向右 

        // &&
        var res = 100&& 'hello' &&true && 1.5;
        // true true true &&1.5
        console.log(res);//如果都是真,则输出最后一个数
        var res = 100&& 'hello' &&0 && 1.5;
        // true true true &&1.5
        console.log(res);//如果不都是真,则从左到右 遇到假的 则输出那个为假的数
        // ||
        var res = 0|| '' ||false || NaN;
        // false false false || nan
        console.log(res);//如果都是假的,则输出最后一个数
        var res = 10|| 0 ||false || NaN;
        console.log(res);//如果不都是假的,则从左到右,遇到真的 就输出哪个为真的数据
        

         // 最少6位 最多 30位  

        var username = prompt('请输入您的用户名:');

        var len = username.length;

        var res = len >=6 && len<=30;
        alert(res);

        // 剪刀 0 石头 1 布 2 
        // 用户 0  1  2
        // 电脑 2  0  1
        var test = prompt('请输入剪刀0布2石头1');
        var computer = prompt('请输入剪刀0布2石头1');
        var res =  (test == 0 && computer==2) || (test == 1 && computer==0) || (test == 2 &&computer==1);
        console.log(res);


        // 闰年  


        // 能被4整除  不能被100整除 或者 能被400整除的年份是闰年
        // 要求让用户输入年份  注意类型  
        // 打印 您输入的年份***true闰年
        var year = parseInt(prompt("请输入您想检验的年份")); 
        var flag = (year % 4 == 0 )&& (year % 100 != 0 )||(year % 400 ==0);
        console.log('您输入的年份'+year+flag+'闰年');

    </script>
</body>
</html>

5.自增自减

前置则先自增自减,在参与运算
后置则先参与运算,在自增自减


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var n = 5;
        // ++n;
        // console.log(n);//n本身来讲 +1
        // --n;
        // console.log(n);//n本身来讲 -1
        // n++;
        // console.log(n);//n本身来讲 +1
        // n--;
        // console.log(n);//n本身来讲 -1

        // console.log(10 + ++n);
        // console.log(10 + n++);
        
        // console.log(10 - --n);
        // console.log(10 - n--);
        var a = 3;
        var b = 4;
        // console.log(a++ + ++b - --n);//4
        // console.log(a);//4
        // console.log(b);//5
        // console.log(n);//4
        console.log(++a + b++ - --n+ ++a);//9
    </script>
</body>
</html>

6.运算符的优先级

!> &&>||
遇到比较运算符则输出true、false 其他输出 数值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // !>&&>||
        // 逻辑与是:比较运算符就输出true false   数值就输出数值
        // var a=3,b=4,c=5;
        // var res = !c||b&&c;
        //           false||true&&true
        //           false||true(2)
        //           true(2)==>5
        // console.log(res);//==>5
        
        var res = 3>5&&2<7&&10==4;
        //        false &&true&&false
        //        false
        console.log(res);//false
    </script>
</body>
</html>

结构

1.if


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var age = parseInt(prompt('输入年龄'));
        if(age>=18){//先将齐进行隐式转换
            console.log('欢迎光临');
        }
        console.log('好好学习天天向上');
    </script>
</body>
</html>

2.if else

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var year = parseInt(prompt("请输入您想检验的年份")); 
        if (year % 4 == 0 && year % 100 != 0 ||year % 400 ==0){
            console.log('您输入的年份'+year+'是闰年');
        }else{
            console.log('您输入的年份'+year+'不是闰年');
        }
    </script>
</body>
</html>

3.if else if

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var test = prompt('请输入剪刀0布2石头1');
        var computer = prompt('请输入剪刀0布2石头1');
        if  (test == 0 && computer==2 || test == 1 && computer==0 || test == 2 &&computer==1){
            console.log('您赢了');
        }else if(test == computer){
            console.log('平局')
        }
        else{
            console.log('你输了,再接再厉')
        }


        var grade = parseInt(prompt('请输入您的成绩'));
        if(grade>=90){
            console.log('A');
        }
        else if(grade<90&&grade>=80){
            console.log('b');
        }
        else if(grade<80&&grade>=70){
            console.log('c');
        }
        else if(grade<70&&grade>=60){
            console.log('d');
        }
        else{
            console.log('e');
        }

        // 80<=grade<90 js 先判断80<=grade 如果是true 那么直接输出 如果第一个不是正常的 那么判断第二个grade<90 true 
    </script>
</body>
</html>

4.分支嵌套

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var ticket = prompt("请输入是否买票1或者0");
        if(ticket== '1'){
            console.log('买票了');
            var suan = parseInt( prompt("请输入核酸小时数"));
            if (suan<48){
                console.log('请安检');
                var safe = prompt('是否安检1、0');
                if(safe=='1'){
                    console.log('一路顺风');
                }else{
                    console.log('请安检');
                }
            }else{
                console.log('请出站做核酸');
            }

        }else{
            console.log('请先买票');
        }

    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值