您的位置:首页 > Web前端 > JavaScript

Js零散知识点笔记

2016-12-27 15:16 274 查看
将类数组对象转换为数组

ES5:

var arrLike = document.querySelectorAll('span');
var arr = Array.prototype.slice.call(arrLike);


ES6:

var arrLike = document.querySelectorAll('span');
var arr = [...arrLike];


  

任务执行顺序

macro-task(宏任务) 取出一个任务,执行完后再执行下一个 macro-task 。每个 macro-task里面先执行普通代码,执行完后再执行 micro-task(微任务),micro-task 执行完后才执行下一个macro-task。setTimeout 等 macro-task 会将代码推入下一个 macro-task ,直到上次 macro-task 执行完毕才会执行代码。

macro-task: script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering
micro-task: process.nextTick, 原生Promise, Object.observe, MutationObserver

Function.toString

function fn() { 'abc' }
fn.toString = function (arg) {
return 123;
}
alert(fn);
console.log(fn == 123);
console.log(fn === 123);


第一个 alert 打印的是 123, alert 方法会调用 toString 方法,所以打印的是 123 。

第二个 console.log 则是隐式转换,触发了 fn.toString, 所以打印的是 true。

第三个 console.log 没有隐式转换,所以打印的是 false。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: