06 JS BASIC 数据类型的转换、运算符和表达式

==========================================
1、数据类型的转换
2、运算符和表达式
==========================================
1、数据类型转换
    1、弱类型
        由数据来决定数据类型(JS)

        var num;//undefined
        num=12;//number
        num="你好";//string
        num=false;//boolean

        强数据类型(C、C++...):由数据类型来决定数据

        1 、typeof() 函数
            作用:获取指定数据的数据类型
            语法:
                typeof(变量) 或者 typeof 变量;
            使用:
                var result = typeof(变量);
    2、隐式转换
        不同类型的数据在计算过程中会自动进行转换
        特点:
            任何一种数据类型的数据,再与string做“+”运算时,都会转换成 string,再做连接

            数字与布尔类型做加减时,会将boo转换为num

            数字与未定义做加减时,NaN

            布尔与未定义做加减时,NaN
        NaN : Not a Number , 不是一个数字

        函数:isNaN(数据)
        作用:判断数据是否为 非数字类型(只判断数值,与类型无关) ,如果是非数字,返回true,是数字返回false

        问题:将字符串25转换为 数字25,再做加法运算-------强制转换
    3、强制转换(显示转换)
        由JS提供的一组转换函数来完成数据类型的转换
        1、toString()
            转换成字符串,任一数据类型的数据均可转换为string类型
            语法:数据(变量).toString()       ex:num.toString();
        2、parseInt(数据)(能转的就转,不能转的就拉倒)
            将数据转换为number类型(整数)
            碰到第一个非整数字符,则停止转换          ex:var str = "25";        parseInt(str);
            如果无法转换时,转换的结果为NaN         
        3、parseFloat(数据)(能转的就转,不能转的就拉倒)
            将数据转换为number类型(小数)
            碰到第一个非小数点或数字字符,则停止转换,
        4、Number(数据)
            将一个数据解析为number类型
            注意:如果数据中包含非法字符(非0~9和小数点),则返回NaN

            Number("25") : 25
            Number("25.5") : 25.5
            Number("25.5abc") : NaN(特点

===========================================运算符和表达式=====================================
2、运算符和表达式
    1、运算符
        做数据的运算
    2、表达式
        由运算符和操作数所组成的式子,称之为表达式
        var a = 5;//赋值表达式
        var b = 10;//赋值表达式
        a+b;//算术表达式

        注意:每一个表达式,都有值
        console.log(a+b);

        b=a=a+b;(从右往左看)

        console.log(a=a+b);
    3、运算符分类
        1、算术运算符
            +,-,*,/,%

            ex:
                1、
                    var a="15";
                    var b="13";
                    var result=a-b;//2
            注意:
                -,*,/,%
                如果两边的操作数不是number类型,会试图通过 Number()先进行转换,如果无法转换成Number类型,结果则为NaN

            ++(自增),--(自减)
            ++:在自己值的基础上做加1操作
            --:在自己值的基础上做减1操作

            var num=5;
            num++; 作为后缀,先去使用变量的值,然后对其进行自增操作( var num = 1; console.log(num++); 打印出的结果为5,存的为6;)
            ++num; 作为前缀,先对变量进行自增操作,然后再使用变量的值

            优先级:
            先*,/,%,再+,-
            想提升优先级:()

            ex:
                1、var result=35+2*18/3+12/6%4
                         =35+12+2 = 49
                2、var result=(35+2)*(18/(3+3))/6%4
                             =37*3/6%4
        2、关系运算符
            1、运算符
                >,<,>=,<=,==(判断等于),!=

                ===(全等),!==(不全等)

                === 与 ==的区别:
                1、==
                    只判断数值,不判断类型

                    "35"==35 结果为 true
                2、===
                    判断 类型以及数值 是否都相等

                    "35"===35 结果为 false

                由关系运算符组成的表达式称之为关系表达式,关系表达式的结果都是boolean类型
            2、特殊注意
                1、字符串 和 数字比较大小关系时
                    先将字符串通过Number()转换成数字再进行比较
                2、字符串 和 字符串比较大小关系时
                    实际上是比较每位字符的Unicode码
                    张三丰
                    张无忌
                3、NaN参与关系比较时,结果一律为 false
            3、isNaN 函数
                判断一个数据是否为非数字
                isNaN()
        3、逻辑运算符
            1、作用
                多条件之间的判断关系
            2、逻辑运算符
                逻辑非 : !
                逻辑与 : &&
                逻辑或 : ||  

                逻辑与:
                    判断两个条件,如果两个条件的值都为true的话,整个表达式的结果为true,如果有一个条件的结果为false,整个表达式的结果就为 false

                    ex:
                        如果 笔试成绩 大于60分,并且面试成绩 也大于 60分,可以入职。
                逻辑或:
                    判断两个条件,两个条件中,有一个条件为true,那么整个 逻辑或 的结果就为 true,否则为 false(两个结果同时为false时)

                逻辑非:
                    对现有条件结果进行取反
                    非真即假
                    非假即真
                练习:判断是数字?是英文字符?是汉字?
                var num=prompt("input....");
                思路:判断num的所在范围
                1、num在 字符 0 到 字符9之间,说明是数字
                2、num在字符a到字符z或者在字符A到字符Z之间,说明是英文
                3、num在字符 \u4e00 到 \u9fa5 范围内,说明是 汉字
            3、短路逻辑
                1、&&(短路与)
                    如果第一个表达式的结果为false,那么第二个表达式就不用再判断,整个表达式的结果为 false
                    如果第一个表达式的结果为true的话,则继续判断第二个表达式的结果,并且以第二个表达式的执行结果作为整个逻辑表达式的结果。
                2、||(短路或)
                    如果第一个表达式的结果为true的话,那么就不在继续执行第二个表达式,并且将 true作为整个逻辑表达式的结果。
                    如果第一个表达式的结果为false的话,则继续执行第二个表达式,并且将第二个表达式的计算结果作为逻辑表达式的结果
        4、位运算
            1、特点
                1、做数字运算
                2、将数字转换为二进制,再进行运算
            2、运算符
                1、&
                    按位 与,将两边的操作数转换成二进制,每位的数字,只有对应都为1的时候,该位的结果才为1,否则该位的结果就是0
                    ex:
                        5 & 3 ?

                        5:101
                        3:011
                        -----------
                        r:001
                    作用:判断一个数字的奇偶性,判断的数字与1做按位与

                        5 & 1?
                        5 :101
                        1 :001
                        -----------
                                 1
                2、|
                    按位或,两边的操作数转换成二进制,比较每位上的数字,两个数中有1个是1的话,该位的结果为1,否则为0
                    场合:向下求整
                    求:5 | 3
                        5:101
                        3:011
                        =========
                            111
                        6.5 | 0
                        ==>
                        6 | 0
                        6:110
                        0:000
                3、<<
                    按位左移,将2进制数向左移动几位,后面以0补齐
                    ex:
                        2<<1 : 4
                        2<<2 : 8
                        2<<3 : 16

                        0000 0000 0000 0000
                        0000 0000 0001 0000
                4、>>
                    按位右移,将2进制数向右移动几位,前面补0
                    8>>1 : 4
                        0000 0000 0000 0000
                        0000 0000 0000 0100
                    8>>2 : 2
                    8>>3 : 1
                    8>>4 : 0

    5、练习
            计算克莱托指数(身高体重比)
            公式如下:体重(kg) / (身高(m)*身高(m))
            20-25 : 正常
            25以上:偏胖
            20以下:偏瘦

            ex:
                体重:85
                身高:1.81

                指数=85/(1.81*1.81);//25.945483

1、运算符
    1、赋值运算符
        1、使用"="进行赋值
            注意:
                赋值符号的左边,必须是变量
                const PI=3.14;(特殊)
        2、扩展赋值表达式
            +=,-=,*=,/=,%=,&=,|=,^=
            ex:
                var num = 5;
                num+=3; ==> num=num+3;

                num-=5; ==> num=num-5;
            语法:a+=b;==> a=a+b;
    2、字符串连接
        运算符: +
    3、条件运算符(三目运算符、三元运算符)
        单目运算符:!,++,--
        双目运算符:+,-,*,/,%,&&,||,^,&,|,>,<
        三目运算符:需要三个操作数/表达式

        语法:
            表达式1?表达式2:表达式3;
            表达式1的运行结果应为boolean类型
                若表达式1为true,则整个表达式的值为表达式2的运算结果
                若表达式1为false,则整个表达式的值为表达式3的运算结果

        条件表达式允许被嵌套:
        判断考试成绩,如果考试成绩>=80,则输出成绩优秀,如果大于等于60分,输出成绩合格,否则输出不及格

       

      

猜你喜欢

转载自blog.csdn.net/Pony_18/article/details/81586544