我正在使用 URLSearchParams
它将返回一个迭代器对象,但在 IE 中不受支持。我添加了一个 polyfill , 但现在 IE 对返回的 iterator object 没有任何原生支持因为它没有实现 for...of
语法。
在没有 for..of
的情况下调用迭代器对象的首选语法是什么?
这是 ES6 的 for...of
语法:
var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = urlParams.entries();
for(pair of entries) {
console.log(pair[0], pair[1]);
}
var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = urlParams.entries();
for(pair of entries) {
console.log(pair[0] + ": " + pair[1]);
}
<script src="https://cdn.rawgit.com/WebReflection/url-search-params/v0.10.0/build/url-search-params.js"></script>
我很想找到一个规范的源代码,它可以将迭代器对象的调用语法实现回旧浏览器,而不依赖于转译 for...of
。
最佳答案
为什么不用旧的 forEach
?
console.log(urlParams);
显示返回的对象具有 forEach
方法,但令人惊讶的是,MDN 中的方法中并未提及它。
urlParams.forEach(function(value, key){
console.log(key + ' : ' + value)
});
var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
urlParams.forEach(function(value, key){
console.log(key + ' : ' + value)
});
各浏览器中UrlSearchParams
的原型(prototype)方法:
关于javascript - 在不使用 for...of 的情况下正确使用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603554/