脚本宝典收集整理的这篇文章主要介绍了Js内容总结,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
延迟加载方式:async ,defer
①Script:上图代码执行顺序:最先会进行HTML的解析,解析过程中有遇到引入的vue.js会暂停,让vue.js下载并且执行,之后再去解析HTML。(这种情况下 一旦vue.js有错解析失败,是获取不到box 这个dom的)
②async:async和HTML解析是同步进行的,不是顺序执行js脚本(谁先加载完成谁先执行)
③defer:等HTML全部解析完成,才会执行js代码,并且是顺序执行js脚本
基本类型:string ,number , boolean ,undefind ,null
引用类型:object(包括 array和function等)
null 和 undefind 的区别?
①一开始JavaScript诞生的时候,作者借鉴java语言只设置了null 表示 ‘无’的值,根据C语言的传统,null被设计成可以自动转为0;(typeof(null) => object; Number(null) => 0)
②后来作者觉得表示无的值最好不要是对象,且null会被隐式的转换为0 所以作者新加了一个undefined填补这里的缺点(typeof(undefind) => NaN 是一个数字类型但不表示具体数)
==:比较的是值;
===:除了比较值,还比较类型;
以上打印全部为true;
string == number || boolean || number ...都会隐式转换通过valueOf()转换,js后台自动转换,并不会显示出来,所以如果打印类型还会是string
代码中尽量用 === 避免坑且性能好些
前提了解:Js是单线程语言,即同一时间只能做一件事。之所以设置成单线程,是因为它是浏览器脚本语言,主要用来用户互动,操作DOM,如果设置成多线程,会带来很多的同步问题。
比如一个线程在某个DOM上添加内容,另一个线程删除这个节点,就会乱套。
Js执行流程:同步执行完 ==> 事件循环(包含微任务和宏任务)==> 微任务 ==> 宏任务 ==> 微任务 (宏任务中的微任务)。。。
先要执行同步的 再执行事件循环(Event loop)之后事件循环中的进入同步栈;
所以上面的一开始有个3 后来隔一秒打印一个3 一共打印3个3;
任务队列( Event Queue )所有的任务可以分为同步任务和异步任务,同步任务,顾名思义,就是立即执行的任务,同步任务一般会直接进入到主线程中执行;而异步任务,就是异步执行的任务,比如ajax网络请求,setTimeout 定时函数等都属于异步任务,异步任务会通过任务队列的机制(先进先出的机制)来进行协调。如上图所示。
要执行宏任务的前提是清空了所有的微任务
上述代码打印后是
①除了函数外,js没有块级作用域
②作用域链:内部可以访问外部的,但是外部的不可以访问内部的变量
注意(内部有 优先找内部 如果内部没有就向外查找)
③声明变量是如果在函数内var a = 10 ,a是局部的 但是如果a = 10 则a是全局的 (注意var a=b=10 ,这种写法 a是局部 b是全局的。
④变量提升 (如下图)
打印是undefind而不是报错。因为会将变量提升 即 var str;在进行下面的打印 在进行变量的赋值操作。
上面的a都是undefind 即便是if不执行 变量也会进行提升 只不过不赋值。
⑤优先级 : 声明变量>声明普通函数>参数>变量提升
①[1,2,3] === [1,2,3]; //false; 数组是对象的引用 此处的两个数组相当于都是new出来的 ,都是新对象 所以不相等 分配的内存地址也不同。(注:==也是false)
②
obj2是obj1的引用而不是new出来的,此时不论改变obj1还是obj2,a的值都会同步的改变,均变成aaaaa;
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即可同上④处理
①slice会返回一个新的数组,原数组不改变,是用来截取的数组的slice(2)下标2开始向后截取组成新数组,也可以写slice(1,3)截取下标1到3
②splice可以插入删除 替换 它会改变原数组。Splice(1,1)
上图arr4 //[‘b’] 返回的是删除的内容
arr3 // [‘a’,’c’,’d’,’e’]原数组更改
splice(1,1,’测试’)最后一个参数表示删除后再进行插入
①new Set()数组去重 得到一个对象后使用扩展运算符或用Array.from()得到一个数组
②自己写逻辑去重(使用indexOf)
③sort排序方式去重
以上是脚本宝典为你收集整理的Js内容总结全部内容,希望文章能够帮你解决Js内容总结所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。