关于for in

关于for in

遍历出来的K值是属性名,要使用person[p]才能读取属性值,p不用加引号。而直接用属性名读取属性值的时候一定要加引号才能读取person["name"],不用引号person[name]反而报underfine,为什么?

http://img1.sycdn.imooc.com//climg/5dff75ac09b5d4a808160233.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,问题解答如下:

1. k不加引号是因为它是一个变量,如下:

http://img1.sycdn.imooc.com//climg/5e00215b0974108505040427.jpg

2.name不加引号,会被当成一个变量。正常情况下,没有定义这个变量,是要报错的。而这里之所以没有报错,是因为name它本身就是window上的属性,window的属性等同于一个变量,所以输出的是undefined。(这里也要注意,不要用name作为变量名。)

示例:

换一个变量名,因为变量没有定义会报错。

http://img1.sycdn.imooc.com//climg/5e00226c0982c90e03520046.jpg

http://img1.sycdn.imooc.com//climg/5e00226c093ac7c805710083.jpg

当定义了这个变量,就能获取到age的属性值

http://img1.sycdn.imooc.com//climg/5e00228109014ce104430484.jpg

http://img1.sycdn.imooc.com//climg/5e0022a209c1e8e403130073.jpg

获取直接加引号去获取对应的属性值:

http://img1.sycdn.imooc.com//climg/5e0022c509ead4f003640061.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

提问者 慕仙9874720 2019-12-22 21:59:40

附代码

<!DOCTYPE html>

<html>

<head>

  <title></title>

  <meta charset="utf-8">

</head>

<body>

  <script type="text/javascript">

  var person={

    name:"Tom",

    age:18,

    sex:"man"

  }

  for(var k in person){

    console.log(k);

    console.log(person[k]);

  }

  console.log(person[name]);


  </script>

</body>

</html>


  • 提问者 慕仙9874720 #1
    问题里面的P应该是K,写错了
    2019-12-22 22:00:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师