最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • JavaScript for-in和for-of的区别总结

    正文概述 掘金(火星飞鸟)   2021-07-23   550

    for-in

    for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。

    for (variable in object){
    	...
    }
    
    • variable:在每次迭代时,variable会被赋值为不同的key,即属性名
    • object:非Symbol类型的可枚举属性被迭代的对象。

    for ... in更适合遍历对象,不建议与数组一起使用,因为遍历顺序有可能不是按照实际数组的索引顺序。

    for ... in会遍历所有的可枚举属性,包括原型

    const obj = { a: 1, b: 2, c: 3 };
    
    function myObj() {
        this.name = 'Jack';
    }
    
    myObj.prototype = obj;
    
    const user = new myObj();
    
    for (const prop in user) {
        console.log(`user.${prop} = ${user[prop]}`);
    }
    // user.name = Jack
    // user.a = 1
    // user.b = 2
    // user.c = 3
    

    如果想仅迭代自身的属性,需要使用hasOwnProperty()方法判断某个属性是否是该对象的实例属性:

    const obj = { a: 1, b: 2, c: 3 };
    
    function myObj() {
        this.name = 'Jack';
    }
    
    myObj.prototype = obj;
    
    const user = new myObj();
    
    for (const prop in user) {
        if (user.hasOwnProperty(prop)) {
            console.log(`user.${prop} = ${user[prop]}`);
        }
    }
    // user.name = Jack
    

    for-of

    for...of语句在可迭代对象(包括 ArrayMapSetStringTypedArrayarguments对象等 )上创建一个迭代循环,并为每个不同属性的值执行语句。

    for (variable of iterable) {
    	...
    }
    
    • variable:在每次迭代中,将不同属性的分配给variable
    • iterable:被迭代枚举其属性的对象。

    迭代数组

    const arr = [10, 20, 30];
    
    for (const value of arr) {
        console.log(value);
    }
    // 10
    // 20
    // 30
    

    迭代Map

    const map = new Map([
        ['a', 1],
        ['b', 2],
        ['c', 3],
    ]);
    
    for (const entry of map) {
        console.log(entry);
    }
    // ["a", 1]
    // ["b", 2]
    // ["c", 3]
    
    for (const [key, value] of map) {
        console.log(value);
    }
    // 1
    // 2
    // 3
    

    迭代arguments对象:

    (function () {
        for (const argument of arguments) {
            console.log(argument);
        }
    })(1, 2, 3);
    
    // 1
    // 2
    // 3
    

    总结

    • for...in语句以任意顺序迭代对象的,包括原型。不建议与数组一起使用。
    • for...of 语句遍历可迭代对象

    起源地下载网 » JavaScript for-in和for-of的区别总结

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元