为何打印的是未定义?

为何打印的是未定义?

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
    <title>方法的调用</title> 
</head> 
<body> 
    <script type="text/javascript"> 
   // 在此处完成任务
   var person={
       
       setPerson:function (per,val){
           this.per=val;
       },
       
   };
  
   person.setPerson(name,"xm");
   console.log(person.name);
    </script> 
</body> 
</html>

为何打印的是未定义?

正在回答

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

3回答

传实参的时候要这样哦,否则name会被当做没有赋值的变量传入

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

  • 红星双子 提问者 #1
    非常感谢!
    2017-11-20 17:53:42
怎么都被占用了呢 2017-11-20 14:35:43

因为这样的话,http://img1.sycdn.imooc.com//climg/5a1277770001bfea04820261.jpgper就会被当做成员属性被定义,而不再是变量了。

  • 提问者 红星双子 #1
    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>方法的调用</title> </head> <body> <script type="text/javascript"> // 在此处完成任务 var person={ setPerson:function (per,val){ this[per]=val;//这里用中括号而不用“.”是因为per相当于该方法中的一个变量,如果用“.”来调用,解析器会误以为per就是属性名本身。 }, }; person.setPerson(name,"xm");//这里定义了一个键值对 console.log(person[name]);//上面已经定义了name属性,为何这里还要用中括号呢?如果用“.”就会提示未定义 </script> </body> </html>
    2017-11-20 17:32:39
提问者 红星双子 2017-11-19 15:10:15
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
    <title>方法的调用</title> 
</head> 
<body> 
    <script type="text/javascript"> 
   // 在此处完成任务
   var person={
       
       setPerson:function (per,val){
           this[per]=val;//这里用中括号而不用“.”是因为per相当于该方法中的一个变量,如果用“.”来调用,解析器会误以为per就是属性名本身。
       },
       
   };
  
   person.setPerson(name,"xm");//这里定义了一个键值对
   console.log(person[name]);//上面已经定义了name属性,为何这里还要用中括号呢?如果用“.”就会提示未定义
    </script> 
</body> 
</html>

问题解决了,不过还是不明白???????

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

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

在线咨询

领取优惠

免费试听

领取大纲

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