JS第二周复习

103 阅读4分钟

day1 隐式转换 和 短路逻辑 和 三目运算符 和 赋值运算符

    隐式转换:
        + "" 可以隐式转换为一个布尔值
        -、*、/、% 可以隐式转换为数值类型,和Number的作用一样 undefined->NaN  null->0
        比较运算符可以隐式转布尔
            除这几个以外,""0NaNundefinednull  其他的转布尔都为true
    短路逻辑
        条件&&(操作)  当条件满足,则继续执行操作 常用于替代简单的 if语句
        条件||(操作)  当条件不满足,则继续执行操作  常用于二选一
    三目运算符
        条件一?操作一:条件二?操作二:。。。。。:默认操作;
            注意:三目运算符只能处理操作只有一句话的分支结构
    赋值运算符
        = += -+ *= /= ++ --
        注意区分前++ 和 后++; --也一样
            单独使用时,作用一样,都是变量自增自减1
            和其他任何一起使用时,++i会用自增后的参与运算,而i++则用原值参与运算,然后再自增

day2 函数作用域 和 return 和 声明提前 和 switch分支语句

    函数作用域:
        局部变量和局部函数只能再函数作用域中使用
            局部可以使用全局的,但全局不能使用局部的(可以用return解决)
            不要再函数作用域中不加  var 创建变量,会造成全局污染(全局中没有这个变量则会再全局中创建) 全局修改(全局中有该变量,会修改原变量的值)
    全局作用域:
        全局变量和全局函数可以在页面的任何位置使用

    return 函数向全局返回一个数据,但是只负责返回负责封装,需要用一个变量来保存这个return值
        retrun a;
        var result = fun();

    声明提前:
        var声明的变量 和 function声明的函数 会被提前到当前作用域的顶部,但是赋值留在当前位置
    
    switch分支语句
        switch(变量/表达式){
            case 值1break;
            case 值2break;
            case 值3break;
            ....
            default:
            默认操作;
            break;
        }

day3 hash数组 和 数组的API

    hash数组: 可以自定义下标的数组   创建hash数组的语法  var arr = [];   arr["自定义索引"] = 元素值;
    for in是专门用来遍历hash数组的方法  for(var i in 数组名){操作};
        hash数组的原理
            hash算法:我们自定义的索引会被解析为一个尽量不重复的数字地址值,用来保存后面的元素;同样的字符串会被解析为同样的数字地址
                新建元素:自定义索引被解析出来的数字地址保存着后面的元素
                读取元素:同样的数字地址值指向的元素是同一个
            除了undefined和null,万物皆对象,因此我们想要遍历对象也可以用 for in方法 或者用 hash地址值去获取某一个 属性的属性值 对象名[属性名]
    
    数组的API
        arr.join("自定义连接符")方法 
            本质用法为自定义连接符  常用于页面渲染 标签
            "<option>" + arr.join("</option><option>") + "</option>"  为将数组的元素用 option 标签渲染包装后
        arr.concat(添加的新元素)
            向数组最后添加新元素,但是不会改变元素组,而是返回一个包含新元素和旧元素的新的复制数组
            如果添加的是数组,会自动拆开这个数组放到复制数组中
        arr.slice(开始下标,结束下标); 获取数组中的某段元素,不改变原数组,将获取到的元素 用一个数组装起来返回
            截取开始下标(包含) 到 结束下表(不包含) 之间的元素
            只写一个开始下表,表示开始到结束全都要
            两个都不写表示 赋值 完整数组, 深拷贝 改变一个另一个也改变; 和浅拷贝对应
        arr.splice(开始下标,删除的个数,添加进去的元素可以多个)  会改变原数组,且会返回删除掉的元素数组
            插入的元素会将 开始下标原位置的 元素和后面的所有元素向后退
            千万不要直接插入数组,没有concat的自动拆开数组功能
            能识别字符,如果为负值 则从后往前数下标即可