js第二周笔记

一、***数据类型转换


    1、强制转换
        1)、转字符串:var str=x.toString();//x不能是undefined和null - undefined和null不能使用.
                   var str=String(x);//万能的,完全等效于隐式转换,还不如+""
            不重要:页面上一切数据的数据类型都是字符串

        2)、*转数字:
            ①、*parseInt/Float(str);//专门为字符串转为数字准备的
                原理:从左向右,依次读取每个字符,碰到非数字字符则停止,如果一来就不认识则为NaN
                    Int不认识小数点    Float认识第一个小数点

            ②、Number(x);//万能的,完全相当于隐式转换,还不如-0 /1 *1 %1

        3)、转布尔:
            Boolean(x);//万能的,任何人都可以转为布尔,绝对不会手动使用,还不如:!!x
            ***只有6个会为false:0,"",undefined,null,NaN,false,其余都为true
            在分支/循环的条件之中,自动隐式转换,以后不管代老师在条件里面写的有多奇怪,你都要知道他会悄悄的变成一个布尔值,你只需要判断是不是那6个

    2、隐式转换:都是出现在运算符之中

二、****运算符和表达式

1、*算数运算符:+ - * / %
        特殊:1)、%:取余,判断奇偶性
                   2)、具有隐式转换,默认转为数字,在运算
                undefined->NaN
                null->0
                true->1
                false->0
                特殊:1)、+运算,碰上字符串,拼接
                           2)、-*/%:字符串也可以转为数字,但是纯数字组成的字符串才行,包含非数字字符则为NaN
                           NaN参与任何算术运算结果仍为NaN

2、*比较运算符:>  <  >=  <=  ==  !=  ===  !==
         结果:布尔值
         隐式转换:默认,转为数字,在比较大小
         特殊:1)、如果参与比较的左右两边都是字符串,则是按位PK每个字符的十六进制的unicode号(十进制ascii码)
                0-9<A-Z<a-z<汉字:常识:汉字的第一个字:一:unicode号:4e00 - ascii:19968
                                最后一个字:龥:unicode号:9fa5  - ascii:40869

                    2)、NaN参与任何比较运算结果都为false,所以没有办法使用普通的比较运算来判断x是不是NaN
                !isNaN(x);

                    3)、undefined==null;//true
             区分:undefined===null;
             全等:=== - 要求数值相同,并且数据类型也要相同,不再带有隐式转换
                       !== - 不再带有隐式转换的不等比较

            重写String方法,看出==和===的区别
            function String(x){
                if(x===undefined){
                    return "undefined";//return->返回,后面跟着的就是返回的结果
                }else if(x===null){
                    return "null";
                }else{
                    return x.toString();
                }
            }

3、*逻辑运算符:
        作用:综合比较,结果也是为布尔值
        隐式转换:左右两边都会悄悄转为布尔值,再综合比较结果
        &&:全部满足,才满足
                 一个不满足,则不满足

        ||:全部不满足,才不满足
              一个满足,则满足

        !:颠倒布尔值

        特殊:短路逻辑:如果前一个条件,已经可以得出最终结论了,没有必要看后续
            &&短路:如果前一个条件满足,才执行后一个操作,如果前一个条件不满足,则不管后续操作
            目的:简化【简单的】分支:1、一个条件一件事,满足就做,不满足就不做:if(){}                                                                       2、【简单的】- 操作只能有一句话:多句操作导致我们以后维护项目时观看/阅读代码不方便,往往以后很多操作可能就只有一句话
                  语法:条件&&(操作);

            ||短路:实现浏览器兼容性问题:二选一
                e=e||window.event;

4、位运算:
        左移:m<<n,读作m左移了n位,翻译:m*2的n次方
        右移:m>>n,读作m右移了n位,翻译:m/2的n次方
        垃圾:底数只能固定为2,虽然可以设置幂,但是不能设置底数

5、*赋值运算:+= -= *= /= %= ++ --
        一句话完成两个操作,先计算,再赋值回去
        
        i++;//递增,每次只会固定+1
        i+=1;//累加,每次加几由我们程序员决定
        i=i+1;//最老土

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值