es2019

作者: 孟媛的笔记 | 来源:发表于2020-02-19 16:33 被阅读0次
    1. 下载并安装node,node -v 检验版本。(node里已经包含了npm工具)
    2. 使用脚手架es10-cli初始化babel、webpack等配置。
      ①初始化项目es2019npx es10-cli create es2019
      ②切换到项目,并启动:cd es2019npm start
      脚手架-ES2019从入门到精通,搭建成功 🎉
      server is listen, http://localhost:8080
      http://localhost:8080

    如果npm版本低,创建失败:



    如何使用npm以及nrm管理源
    https://www.imooc.com/article/254541


    知识点

    1. 没有使用任何关键字定义的变量,无论是在任何作用域,均作为全局对象window的属性存在,全局属性可以被人为删除delete abcdelete window.abc,但不会随着作用域的消失而销毁。
    2. 全局变量不可以被人为删除,而全局属性可以被人为删除,delete abcdelete window.abc
    3. 局部作用域,指的是函数作用域。使用var定义的局部变量在函数执行完毕后也被销毁。
    4. letvar的区别:
      let是具有块级作用域的{},作用域不能由块级提升为全局,{}外不可以访问。
           var定义的变量,作用域可以由块级提升为全局,{}外也可以访问。
      let定义的变量均不可以以window.abc来访问。
           var定义的块级和全局变量可以以window.bcd来访问,var定义的局部变量不可以以window.bcd来访问。
      ③ 使用let定义的变量不可以被重复定义。
           使用var定义的变量可以被重复定义。
    5. 块级作用域:单纯的{}for循环、while循环、条件为真的if区域。
    6. const定义的是常量,在申明时必须初始化,后续不能修改。const其他性能和let一致。


    数组的5种遍历

    arr = [1,2,3,4,5]
    
    console.log('-------for-------')
    for(let i=0; i<arr.length; i++){
        console.log(arr[i])
    }
    
    console.log('-------foreach-------')
    arr.forEach(element => {
        // if(item===2) continue    //不可用break或continue
        console.log(element)
    });
    
    console.log('-------every-------')
    arr.every(function(item){
        if(item===5){
            return false   //相当于break
        }
        if(item===2){
            //相当于continue
        }else{
            console.log(item)
        }
        return true
    })
    
    console.log('-------forin-------')
    for (const key in arr) {
        if (arr.hasOwnProperty(key)) {
            const item = arr[key];
            console.log(key, item)
        }
    }
    
    console.log('-------forof-------')
    for (const iterator of arr) {
        console.log(iterator)     //遍历器可以自定义,后续章节
    }
    


    伪数组向数组的转换

    为什么要转换,因为只有转换成数组对象才能调用Array的API。

    //伪数组向数组转换,slice切片 (ES5)
    //实现arguments到数组的转换(arguments是函数的不定参)
    let args = [].slice.call(arguments)
    //实现nodelist到数组的转换
    let imgs = [].slice.call(document.querySelectorAll('img')) 
    
    //Array.from()  (ES6)
    //实现arguments到数组的转换(arguments是函数的不定参)
    let args1 = Array.from(arguments)
    //实现nodelist到数组的转换
    let imgs1 = Array.from(document.querySelectorAll('img')) 
    


    Array.from(ArrayLike, mapfn(v, k), thisArg)

    //ArrayLike: 伪数组, mapfn(v, k): 遍历伪数组的函数, thisArg: this对象
    let array = Array.from( {length: 5}, function(v,k){
        return k;  //给伪数组元素赋值
    })
    // 伪数组可以是具备索引的对象,另外有一个length属性:{0:'a', 1:'b', length:5}
    console.log(array)    //(5) [0, 1, 2, 3, 4]
    

    ❓我没明白thisArg是干吗用的?以后用到了研究。

    相关文章

      网友评论

          本文标题:es2019

          本文链接:https://www.haomeiwen.com/subject/ohmafhtx.html