我在以下代码中观察到:
setTimeout(function(){console.log('setTimeout')});
Promise.resolve(1).then(function(){console.log('promise resolve')})
Run Code Online (Sandbox Code Playgroud)
无论我执行多少次,promise回调总是在setTimeout之前记录.
我的理解是两个回调都安排在下一个时钟执行,而我真的不明白发生了什么使得承诺总是优先于超时.
我正在使用以下属性创建此元素:
var x = document.createElement('x');
x.setAttribute('ha','1');
x.setAttribute('he','2');
x.setAttribute('hi','3');
Run Code Online (Sandbox Code Playgroud)
然后我使用这两种形式循环它,每次获得不同的输出:
>>>for(var i in x.attributes) console.log(x.attributes[i]);
ha="1"
he="2"
hi="3"
3
item()
getNamedItem()
setNamedItem()
removeNamedItem()
getNamedItemNS()
setNamedItemNS()
removeNamedItemNS()
Run Code Online (Sandbox Code Playgroud)
而另一个:
>>>for(var i=0;i<x.attributes.length;i++) console.log(x.attributes[i]);
ha="1"
he="2"
hi="3"
Run Code Online (Sandbox Code Playgroud)
那么,这不应该给出相同的结果吗?为什么不 ?