• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

js:for in循环遍历对象包括输出value值为什么是obj[k]而不是obj.k

武飞扬头像
小陈努力再努力
帮助1

  1.  
    var obj = {
  2.  
    name: 'chen',
  3.  
    age: 18,
  4.  
    professional:'student'
  5.  
    }
  6.  
     
  7.  
     
  8.  
    for (var k in obj) {
  9.  
    console.log(k); // k 输出的是属名 :name, age, professional
  10.  
    console.log(obj[k]); // obj[k] 输出的是属性值: chen, 18 , student
  11.  
    }

k就是key;

for in 循环主要用于遍历对象(object);

单独输出k,输出的是属性名 :name, age, professional;

单独输出 obj[k],输出的是属性值 : chen, 18 , student;

最后特别要注意的一点是: 遍历属性值和方法值时,只能用obj[k],不能用obj.k。

如今已经开始学v3了,关于只能用obj[k],不能用obj.k的问题我一直都没有搞懂,今天终于搞懂了。

说起来也有点尴尬,原来在for in函数中,得到的k是一个用var重新声明的变量,所以只能用obj[key]。

obj.k方式的话,对象的属性必须是字符串,而这里的k是一个用var重新声明的形参变量名,所以只能用字符串[变量名]的方式来获取

真正的原因是如果用obj.k,js会把k当作是obj对象中的key(当成字符串)执行,而不会当作循环中的变量再解析成对应属性去执行,就像如下所示

  1.  
    // 如果是obj.k, js会这么认为:不会把k当成变量,而是直接当成obj的key执行
  2.  
    var obj = {
  3.  
    k: 'xxx'
  4.  
    }

但是obj中实际并没有k这个key,所以获取不到。

所以用obj[k]的原因是:只有用obj[k],这个k才会被js当作变量去执行,并把k解析成字符串name, age等key值,这样才能得到最终的value值

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghciae
系列文章
更多 icon
同类精品
更多 icon
继续加载