day10

70 阅读5分钟

1数组塌陷

// var arr = [0, 1, 2, 3, 4, 5]
    // //         0  1  2  3  4  5
    // console.log('原始数组: ', arr)

    // 利用数组的方法, 将数组的每一项 删除  pop shift splice

    // 1. 拿到数组的每一项, 暂时先不用数组的方法, 使用 for循环
    // for (var i = 0; i < arr.length; i++) {
    //     arr.pop()
    //     /**
    //      *  第 1 轮
    //      *      i === 0     arr.length === 6        条件成立, 开始执行内部代码
    //      *          arr.pop()       将数组的最后一项删除, 删除完毕 数组.length === 5
    //      * 
    //      *  第 2 轮
    //      *      i === 1     arr.length === 5        条件成成立, 开始执行内部代码
    //      *          arr.pop()       将数组的最后一项删除, 删除完毕 数组.length === 4
    //      * 
    //      *  第 3 轮
    //      *      i === 2     arr.length === 4        条件成立, 开始执行内部代码
    //      *          arr.pop()       将数组的最后一项删除, 删除完毕 数组.length === 3
    //      * 
    //      *  第 4 轮
    //      *      i === 3     arr.length === 3        条件不成立, 循环到此结束
    //     */
    // }

    // var arr = [0, 1, 2, 3, 4, 5]
    // //         0  1  2  3  4  5
    // console.log('原始数组: ', arr)
    // for (var i = arr.length - 1; i >= 0; i--) {
    //     // arr.pop()
    //     // arr.shift()
    //     arr.splice(i, 1)
    // }

    // for (var i = 0; i < arr.length; i++) {
    //     arr.splice(i, 1)
    //     /**
    //      *  第 1 轮
    //      *      i === 0     arr.length === 6    符合条件
    //      *          arr.splice(i, 1)        (0, 1)  把 [0] 的值截取掉了
    //      *              现在的数组: arr === [1, 2, 3, 4, 5]
    //      *              对应的下标           0  1  2  3  4
    //      *              数组的length === 5
    //      * 
    //      *  第 2 轮
    //      *      i === 1     arr.length === 5    符合条件
    //      *          arr.splice(i, 1)        (1, 1)  把 [1] 的值截取掉了
    //      *              现在的数组: arr === [1, 3, 4, 5]
    //      *              对应的下标           0  1  2  3
    //      *              数组的length === 4
    //      * 
    //      *  第 3 轮
    //      *      i === 2     arr.length === 4    符合条件
    //      *          arr.splice(i, 1)        (2, 1)  把 [2] 的值截取掉了
    //      *              现在的数组: arr === [1, 3, 5]
    //      *              对应的下标           0  1  2
    //      *              数组的length === 3
    //      * 
    //      *  第 4 轮
    //      *      i === 3     arr.length === 3    条件不成立, 循环到此结束
    //     */
    // }

    var arr = [0, 1, 2, 3, 4, 5]
    //         0  1  2  3  4  5
    console.log('原始数组: ', arr)
    for (var i = 0; i < arr.length; i++) {
        arr.splice(i, 1)
        //     i--
        //     /**
        //      *  第 1 轮
        //      *      i === 0     length === 6    符合条件
        //      *          执行内部代码
        //      *              + arr.splice(i, 1)  此时相当于 把 [0] 的值截取掉了
        //      *              + i--               此时相当于把 i 的值更改为 -1
        //      *          循环内部代码执行完毕之后, 会执行一个 i++,   所以下一轮循环开始的时候 i 的值 === 0
        //      * 
        //      *  第 2 轮
        //      *      i === 0     length === 5    符合条件
        //      *          执行内部代码
        //      *              + arr.splice(i, 1)  此时相当于 把 [0] 的值截取掉了
        //      *              + i--               此时相当于把 i 的值更改为 -1
        //      *          循环内部代码执行完毕之后, 会执行一个 i++,   所以下一轮循环开始的时候 i 的值 === 0
        //      * 
        //      *  第 3 轮
        //      *      i === 0     length === 4    符合条件
        //      *          执行内部代码
        //      *              + arr.splice(i, 1)  此时相当于 把 [0] 的值截取掉了
        //      *              + i--               此时相当于把 i 的值更改为 -1
        //      *          循环内部代码执行完毕之后, 会执行一个 i++,   所以下一轮循环开始的时候 i 的值 === 0
        //      * 
        //      *  第 4 轮
        //      *      i === 0     length === 3    符合条件
        //      *          执行内部代码
        //      *              + arr.splice(i, 1)  此时相当于 把 [0] 的值截取掉了
        //      *              + i--               此时相当于把 i 的值更改为 -1
        //      *          循环内部代码执行完毕之后, 会执行一个 i++,   所以下一轮循环开始的时候 i 的值 === 0
        //      * 
        //      *  第 5 轮
        //      *      i === 0     length === 2    符合条件
        //      *          执行内部代码
        //      *              + arr.splice(i, 1)  此时相当于 把 [0] 的值截取掉了
        //      *              + i--               此时相当于把 i 的值更改为 -1
        //      *          循环内部代码执行完毕之后, 会执行一个 i++,   所以下一轮循环开始的时候 i 的值 === 0
        //      * 
        //      *  第 6 轮
        //      *      i === 0     length === 1    符合条件
        //      *          执行内部代码
        //      *              + arr.splice(i, 1)  此时相当于 把 [0] 的值截取掉了
        //      *              + i--               此时相当于把 i 的值更改为 -1
        //      *          循环内部代码执行完毕之后, 会执行一个 i++,   所以下一轮循环开始的时候 i 的值 === 0
        //      * 
        //      *  第 7 轮
        //      *      i === 0     length === 0    不符合条件, 循环到此结束
        //     */
    }

    console.log('删除后的数组: ', arr)
    
    

2.数学的方法

*  数学的方法
     * 
     *  在 JS 中 Math 对象给我们提供了操作数据的一些方法(数学的方法)
     * 
     *  1. random
     *      * 语法: Math.random()
     *      * 作用: 得到一个随机数, 每次生成的数字都不一样, 但一定是0~1之间的, 包含0, 不包含1, 也就是说最大值可能是 0.99999....
     * 
     *  2. round
     *      * 语法: Math.round(数字)
     *      * 作用: 将这个数字(小数), 按照四舍五入的形式变成整数
     * 
     *  3. ceil
     *      * 语法: Math.ceil(数字)
     *      * 作用: 将这个数字(小数) 向上取整
     * 
     *  4. floor
     *      * 语法: Math.floor(数字)
     *      * 作用: 将这个数字(小数) 向下取整
     * 
     *  5. abs
     *      * 语法: Math.abs(数字)
     *      * 作用: 返回这个数字的绝对值
     * 
     *  6. sqrt
     *      * 语法: Math.sqrt(数字)
     *      * 作用: 求 平方根
     * 
     *  7. pow
     *      * 语法: Math.pow(基数, 幂)
     *      * 作用: 返回基数的几次幂
     * 
     *  8. max
     *      * 语法: Math.max(数字1, 数字2, 数字3...)
     *      * 作用: 返回传入的数字中 最大的哪一个
     * 
     *  9. min
     *      * 语法: Math.min(数字1, 数字2, 数字3...)
     *      * 作用: 返回传入的数字中 最小的哪一个
     * 
     *  10. PI
     *      * 语法: Math.PI
     *      * 作用: 返回 π
     
     

3.js的严格模式

*  JS 的严格模式
     * 
     *  JS 是一个相对不是很严谨的语言, 在开发的时候一些代码也不是很严格
     * 
     *      换句话说严格模式就是对开发的时候, 你写的代码做了一些要求
     * 
     *  严格模式的规则
     *      1. 声明变量必须要 var 关键字
     *      2. 函数的形参不可以重复
     * 
     *  JS 中默认是没有开启严格模式, 如果想要开启严格模式, 需要手动在代码最开始的位置(script标签内第一行), 写一个字符串 'use strict'
     * 
     *  现在的公司的项目中, 基本都是按照严格模式开发的
     
     

4.字符集

*  字符集
     * 
     *      计算机只能存储二进制数据  0101010
     *  
     *      我们的 大写字母 小写字母 符号之类的内容 都是由 二进制数字组成
     * 
     *      或者说我们在敲一个字符的时候, 都有一个对应的编号, 计算机存储的时候存储的是这些编号, 
     *      只不过我们看到的时候, 是通过这些编号解析成我们看到的内容
     * 
     *  
     * 前身: ASCII  as key  (128)   只够 美国人用英语的使用
     * 
     *  国内 推出了一个属于中国的 GBK 国标码    前128位 ASCII码, 后边从129位开始就是汉字
     * 
     *  unicode (万国码)    前 128 位还是 ASCII码, 后边开始是各个国家的文字码
     * 
     *      八位十六进制编码            容量小, 但是占用内存也小        UTF-8
     *      十六位的十六进制编码        容量大, 但是占用内存也大