Js内容总结

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Js内容总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
    1. 延迟加载js的方式有哪些?

     

    延迟加载方式:async defer

     

    Js内容总结

     

    Js内容总结

     

     

    Script:上图代码执行顺序:最先会进行HTML的解析,解析过程中有遇到引入的vue.js会暂停,让vue.js下载并且执行,之后再去解析HTML。(这种情况下 一旦vue.js有错解析失败,是获取不到box 这个dom的)

     

    Js内容总结

    asyncasyncHTML解析是同步进行的,不是顺序执行js脚本(谁先加载完成谁先执行)

  1. Js内容总结

     

     

     

     

    defer:等HTML全部解析完成,才会执行js代码,并且是顺序执行js脚本

     

    1. Js数据类型

         基本类型string number boolean undefind null

      引用类型:object(包括 arrayfunction等)

         null undefind 的区别?

     ①一开始JavaScript诞生的时候,作者借鉴java语言只设置了null 表示 ‘无’的值,根据C语言的传统,null被设计成可以自动转为0;(typeof(null) => object; Number(null) => 0

     ②后来作者觉得表示无的值最好不要是对象,且null会被隐式的转换为0 所以作者新加了一个undefined填补这里的缺点(typeofundefind=> NaN 是一个数字类型但不表示具体数)

     

    1. == === 有什么不同?

         

      ==:比较的是值;

     

      ===:除了比较值,还比较类型;

     

    Js内容总结

    以上打印全部为true

    string == number || boolean || number ...都会隐式转换通过valueOf()转换,js后台自动转换,并不会显示出来,所以如果打印类型还会是string

    代码中尽量用 === 避免坑且性能好些

     

    1. Js微任务和宏任务

     

         前提了解:Js是单线程语言,即同一时间只能做一件事。之所以设置成单线程,是因为它是浏览器脚本语言,主要用来用户互动,操作DOM,如果设置成多线程,会带来很多的同步问题。

    比如一个线程在某个DOM上添加内容,另一个线程删除这个节点,就会乱套。

    Js执行流程:同步执行完 ==> 事件循环(包含微任务和宏任务==> 微任务 ==> 宏任务 ==> 微任务 (宏任务中的微任务)。。。

     

    Js内容总结

     

     

     

    Js内容总结

    先要执行同步的 再执行事件循环(Event loop)之后事件循环中的进入同步栈;

    所以上面的一开始有个3 后来隔一秒打印一个3 一共打印33

     

    Js内容总结

     

     

     

     

    任务队列( Event Queue )所有的任务可以分为同步任务和异步任务,同步任务,顾名思义,就是立即执行的任务,同步任务一般会直接进入到主线程中执行;而异步任务,就是异步执行的任务,比如ajax网络请求,setTimeout 定时函数等都属于异步任务,异步任务会通过任务队列的机制(先进先出的机制)来进行协调。如上图所示。

    宏任务主要包含script( 整体代码)setTimeoutsetIntervalI/OUI 交互事件、setImmediate(Node.js 环境)

    微任务主要包含Promise.thenMutaionObserverprocess.nextTick(Node.js 环境)

     

    要执行宏任务的前提是清空了所有的微任务

     

    Js内容总结

    上述代码打印后是

     

    Js内容总结

     

     

     

     

    1. Js作用域

      

             ①除了函数外,js没有块级作用域

             ②作用域链:内部可以访问外部的,但是外部的不可以访问内部的变量

                           注意(内部有 优先找内部 如果内部没有就向外查找)

             ③声明变量是如果在函数内var a = 10 a是局部的 但是如果a = 10 a是全局的 (注意var a=b=10 ,这种写法 a是局部 b是全局的。

             ④变量提升 (如下图)

     

    Js内容总结

     

     

    打印是undefind而不是报错。因为会将变量提升 即 var str;在进行下面的打印 在进行变量的赋值操作。

     

    Js内容总结

     

     

          

    Js内容总结

     

     

     

    上面的a都是undefind 即便是if不执行 变量也会进行提升 只不过不赋值。

    ⑤优先级 : 声明变量>声明普通函数>参数>变量提升

     

    1. Js对象引用

     

                ①[1,2,3] === [1,2,3]; //false;   数组是对象的引用 此处的两个数组相当于都是new出来的 ,都是新对象 所以不相等 分配的内存地址也不同。(注:==也是false

                ②

    Js内容总结

     

    Js内容总结

     

     

         

    obj2obj1的引用而不是new出来的,此时不论改变obj1还是obj2a的值都会同步的改变,均变成aaaaa

    1. Js判断变量是不是数组的方式

           var arr = [1,2,3]

          Arrary.isArrary(arr )  //true;

          ②arr instanceof Array  //true;

          ③Object.prototype.toString.call(arr) //[object Array]

          ④Object.prototype.toString.call(arr).indexOf(‘Array’)>-1 则是数组

          ⑤arr.constructor.toString() // function Array(){[native code]}再用indexOf即可同上④处理

     

    1. slicesplice

          ①slice会返回一个新的数组,原数组不改变,是用来截取的数组的slice2)下标2开始向后截取组成新数组,也可以写slice1,3)截取下标13

          ②splice可以插入删除 替换 它会改变原数组Splice1,1

          

    Js内容总结

     

     

       

       上图arr4 //[‘b’]  返回的是删除的内容

            arr3 // [‘a’,’c’,’d’,’e’]原数组更改

    splice1,1,’测试’)最后一个参数表示删除后再进行插入

     

    1. Js数组去重

     

           ①new Set()数组去重 得到一个对象后使用扩展运算符或用Array.from()得到一个数组

     

    Js内容总结

     

     

            ②自己写逻辑去重(使用indexOf

             

    Js内容总结

     

     

           ③sort排序方式去重

      

    Js内容总结

     

     

     

脚本宝典总结

以上是脚本宝典为你收集整理的Js内容总结全部内容,希望文章能够帮你解决Js内容总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: