【无标题】

比较/关系运算符:> < >= <= == != === !==
      返回的结果:布尔值:true、false
        隐式转换:默认一切都转为数字,再比较大小
        特殊:1、如果参与比较【两个都是字符串】,按位pk每个字符的十六进制unicode号(十进制ASCII码)
NaN,参与任何比较运算结果都为false,解决:!isNaN(x)
            x是一个数字,结果true
            x是一个NaN,结果就为false

         undefined==null;
             问题:null==undefined结果为true,区分不开undefined和null
             解决:全等===:数值相同 并且 数据类型也要相同,换句话说,不再带有隐式转换
               !==:不带隐式转换的不等比较

   逻辑运算符:
    &&:全部条件都为true,结果才为true
        只要有一个为false,结果就为false

    ||:全部条件都为false,结果才为false
        只要有一个为true,结果就为true

     !:颠倒bool值

    特殊:短路逻辑:只要前一个条件已经可以得出最终结论,则后续条件不会再执行
        &&:如果前一个条件满足,则后一个操作才执行,如果前一个条件不满足,则后一个操作不执行
            实现了一个【简单】的分支:目的:简化if(){},操作只能【用一句话】
            语法:条件&&(操作);
            举例:if(total>=500){total*=0.8}
              total>=500&&(total*=0.8)

赋值运算:+= -= *= /= %= ++ --
    一句话完成了两个操作,先运算再赋值回去
    比如:i++ => i+=1 => i=i+1;

    递增 vs 累加
    递增:i++,每次只能加1
    累加:i+=n,每次加几由我们自己决定

 鄙视/笔试题:++i 和 i++ 的区别?
        1、单独使用时,放前放后无所谓都一样
        2、如果参与了别的表达式,变量中的值都会+1
            前++,返回的是加了之后的新值
            后++,返回的是加了之前的旧值

  三目运算 - 简化if...else   if...else if...else
    如何使用:
      1、条件?操作1:默认操作;
      2、条件1?操作1:条件2?操作2:条件3?操作3:默认操作;

循环结构:反复执行 相同 或 相似的操作
do...while循环:
    语法:var 循环变量=几;
          do{
        循环体;
        变量变化;
          }while(循环条件)
    for(var 循环变量=几;循环条件;变量变化){
        循环体;
    }
   数组的基础:一个变量可以保存多个数据
    1、创建:2种
       1、直接量:var arr=[值1,....];
       2、构造函数:var arr=new Array(值1,....);//缺陷:面试中:new Array(3);设置一个长度为3的空数组

    2、访问:
         获取:arr[i]; - 特殊:下标越界:得到undefined
         添加/替换:arr[i]=新值; - 特殊:下标越界:得到稀疏数组

    3、*3大不限制:
        不限制长度、类型、下标越界(不是好东西)

    4、length的三个固定套路:
        获取倒数第n个元素:arr[arr.length-n];
        向末尾添加元素:arr[arr.length]=新值
           缩容:arr.length-=n;

    5、遍历数组:
        for(var i=0;i<arr.length;i++){
            arr[i];//当前次元素
        }
数组 转为 字符串:
    var str=arr.join("自定义连接符");

        实现:二级联动:
            1、必须使用二维数组,而且二维数组的数据顺序一定要和一级的对应上
            2、select专属事件:select.onchange:状态改变事件:选中项发生改变才会触发
            3、select具有一个属性:this.selectedIndex;获取选中项的下标 - 只有select不需要自定义下标
            4、其实绑定事件的部分就是函数名,也可以拿来调用

拼接数组:添加元素到的末尾的新方式
    var newArr=arr.concat(值1,arr1...);
    特殊:
      1、此方法不修改原数组,只会返回一个新数组
      2、此方法传参支持数组参数,并且会悄悄的打散这个数组,单独传入

截取子数组:从starti位置截取到endi+1位置的元素,组成一个新数组
    var subArr=arr.slice(starti,endi+1)
    特殊:
      1、此方法不修改原数组,只会返回一个新数组
      2、含头不含尾
      3、第二实参可以省略:从starti截到末尾
         第一实参也可以省略:从头截到尾 - 昨天按值传递(浅拷贝)
                深拷贝:复制了一个副本给对方
      4、支持负数参数,-1代表倒数第一个

  删除、插入、替换:
    删除:var dels=arr.splice(starti,n);//从starti开始删除n个
      特殊:此方法其实也有返回值,所有删除的元素组成的一个新数组

    插入:arr.splice(starti,0,值1,...);//从starti开始删除0个,插入了新元素
      特殊:原来starti位置的元素以及后续元素都会被向后移动

    替换:var dels=arr.splice(starti,n,值1,...);
      特殊:插入的个数和删除的个数可以随意
转换大小写:【统一的】转为大写或小写,再比较,忽略大小写:- 验证码
        大写:var newStr=str.toUpperCase();
        小写:var newStr=str.toLowerCase();

    获取字符串中指定位置的字符的ascii码
        var ascii=str.charCodeAt(i);

       通过ascii码转回原文
        var 原文=String.fromCharCode(ascii);

    检索字符串:检查索引/下标:从starti位置开始找右侧的第一个关键字的下标
        作用:判断有没有
        var i=str/arr.indexOf("关键字",starti);
              3、数组也可以使用此方法

    截取字符串:
        1、var subStr=str/arr.slice(starti,endi+1);
        2、var subStr=str.substring(starti,endi+1);//不支持负数参数
        3、var subStr=str.substr(starti,n);//截取的个数,不必考虑含头不含尾

  替换字符串:今天不屌,需要有了正则表达式才会牛逼
        var newStr=str.replace("关键字"/正则表达式,"新内容");

        切割/分割字符串:作用:str <=> arr
        var arr=str.split("自定义切割符");
        特殊:
        1、切割符可以自定义,切割过后返回一个数组,数组中不再包含切割符
        2、如果传入的切割符是一个"",每一个字符都会被切开

扩展:创建元素并且渲染页面
    1、创建空标签
        var elem=document.createElement("标签名");

    2、设置必要的属性或事件
        elem.属性名="属性值";
        elem.on事件名=function(){函数体} - 事件都可以在创建时提前绑定上

    3、创建好的元素渲染到DOM树上
        父元素.appendChild(elem);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值