请看菜鸟如何看书(憋住,别笑我)

661 阅读4分钟

本文用于像我这样的菜鸟级别,大佬看在码子不易,给个赞(欢迎指错和指导),有的是自己写的,有的嫌麻烦复制的,此文主要用于以后进行内容回顾

持续更新中~

js基础


  • 1.变量作用域---全局变量与局部变量

    var str1 = 'global';
    str2 = 'global';
    function myFunction() {
        var str1 = 'local';
        return str1;
    }
    function myOtherFunction() {
        str2 = 'local';
        return str2;
    }
    console.log(str1); //{1}
    console.log(myFunction()); //{2}
    console.log(str2); //{3}
    console.log(myOtherFunction()); //{4}
    console.log(str2); //{5}
    

    {1}---输出global,因为他是全局变量

    {2}---输出local,因为str1是在函数myFunction里面声明的,所以仅作用在此函数本身作用域内

    {3}---输出global,str2赋值为第二行

    {4}---输出local,因为没有用var相当于str2在自己函数作用域内进行了全局赋值

      *拓展>变量声明时使用了var如果在局部就是局部变量,未使用相当于全部变量(其实只是全局的一个属性)
      >>>变量与属性的区别:前者不可删除,后者可以删除!如:delete str1 不可删除, delete str2  可以删除
    

    {5}---因为{4}进行了重新赋值,此时str2为local

    注:代码中应尽量减少全局变量,或使用let


  • 2.操作符---三元运算符

    三元运算符

           let a = 1
           let b = 2
           let c = 3
           let d = 4
       //1.
           p = a == 1 ? a : b          //a是否等于1,是p=a,否则p=b
           
       //2. ---这里相当于一个加强版,直接可以避免写switch...case,但是也不好理解
           p = a == b ? 1 : (a == c ? a : (a == d ? a : d))     
           //a是否与b相等,如果是p=1. 如果不是,a是否与c相等,如果是,p=a. 如果不是,a是否与d相等,如果p=a,如果不是p=d
    

  • 真假 ---这里直接贴出来参考

    数值类型 转换成布尔值
    undefined false
    null false
    布尔值 true是 true ,false是 false
    数字 +0、-0和 NaN 都是 false ,其他都是 true
    字符串 如果字符串是空的(长度是0)就是 false ,其他都是 true
    对象 true

数组

1.斐波那契数列

此数列就是入门级别的,不知道我当时怎么不会(别笑我,笑我我也不承认)

    已知第一个数为1,第二个数为2,第三个是前两个数之和,一次类推,列出前20个数
    已知数组arr[0] = 1, arr[1] = 2;
    然后得出arr[i] = arr[i-1] + arr[i-2]
    那么就容易了:
        let arr = [1,2]
        for (let i=2; i<20; i++) {
            arr[i] = arr[i-1] + arr[i-2]
        }

结果就是

2.组件插入值

在一个数组开头插入一个值
如果用unshift很简单,直接arr.unshift(number)
现在用原始方法实现它,原理就是把所有值往后移一位,然后把arr[0]赋值
     let arr = [1, 2, 3, 4, 5]
     let newArr = [10]
     for (let i = arr2.length; i>0 ;i--) {
             newarr[i] = arr2[i-1]
     }

结果:

3.多维数组

先借图一用:

此二维数组,[[72,75,79,79,81,81],[81,79,75,75,73,73]]

传统如果要将此二维数组合并为一维数组要先拿到所有数组值,然后赋值给一个新数组,如:
先进行数组遍历:
            for (var i=0; i<arr.length; i++) {
                for (var j=0; j<arr[i].length; j++) {
                    newArr.push(arr[i][j])
                }
            }
//更加多的多维数组也可以用一样的方法
    使用稍微新点的方法
    var newArr=[]
    arr.forEach(item => {
        newArr = [...newArr, ...item]     //这里使用concat也可以
    })

都为

其他数组方法自己再探索了! 相关数组方法:

方法名 描 述
concat 连接2个或更多数组,并返回结果
every 对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true
filter 对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组
forEach 对数组中的每一项运行给定函数。这个方法没有返回值
join 将所有的数组元素连接成一个字符串
indexOf 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1
lastIndexOf 返回在数组中搜索到的与给定参数相等的元素的索引里最大的值
map 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
reverse 颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在的第一个
slice 传入索引值,将数组里对应索引范围内的元素作为新数组返回
some 对数组中的每一项运行给定函数,如果任一项返回 true ,则返回 true
sort 按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数
toString 将数组作为字符串返回
valueOf 和 toString 类似,将数组作为字符串返回