JS-script标签的 defer 和 async
内容来自公众号javascript
三者之间的区别?
script
当解析器遇到 script 标签时,文档的解析将停止,并立即下载并执行脚本,脚本执行完毕后将继续解析文档。
defer script
当解析器遇到 script 标签时,文档的解析不会停止,其他线程将下载脚本,待到文档解析完成,脚本才会执行。
async script
当解析器遇到 script 标签时,文档的解析不会停止,其他线程将下载脚本,脚本下载完成后开始执行脚本,脚本执行的过程中文档将停止解析,直到脚本执行完毕。
js 数组或者对象的深复制
//数组或对象深拷贝
function deepCopy(o) {
if (o instanceof Array) {
var n = [];
for (var i = 0; i < o.length; ++i) {
n[i] = deepCopy(o[i]);
}
return n;
} else if (o instanceof Object) {
var n = {}
for (var i in o) {
n[i] = deepCopy(o[i]);
}
return n;
} else {
return o;
}
}
多行文本溢出显示省略号
该方法仅在WebKit浏览器或移动端有效
overflow : hidden;
text-overflow: ellipsis;//多行文本的情况下,用省略号“…”隐藏超出范围的文本 。
display: -webkit-box;//将对象作为弹性伸缩盒子模型显示
-webkit-line-clamp: 2;//限制在一个块元素显示的文本的行数
-webkit-box-orient: vertical;//设置或检索伸缩盒对象的子元素的排列方式
兼容性
debounce与throttle的区别
在这拿鼠标移动事件举例,如果你频繁的移动鼠标,throttle 会保证在每 maxWait 时间调用 func 一次,而 debounce 如果没有明确设置 maxWait,是一直不会调用 func 直到你停止移动鼠标后才会调用一次。