老师不太理解这里。。。

老师不太理解这里。。。

  1. 我参考了同学提问的问题,看到有这样子的代码,看到同学有解释,但是我还是并不理解为什么把b = a[0]; 和a = a[1];这两个位置对调为什么输出的结果不一样?以下是代码:

    var a = {name: 'xm'}, b = [4];
    /*此处添加代码*/
    a = [a, b];
    b = a[0];
    a = a[1];
    console.log(a);
    console.log(b);

2.

(1)同理,下面这个代码,一样调换了位置也不行为什么?估计问题所在和问题1是一样的,但是我不知道什么原因造成这样的。

 var a = {name: 'xm'}, b = [4];

/*此处添加代码*/

b.push(a)

a=b[0]

b=b[1].name

document.write(a+'<br/>')

document.write(b)

(2)我想给a.push(b)  写成这样,他没有输出任何内容是什么原因?

var a = {name: 'xm'}, b = [4];

/*此处添加代码*/

a.push(b)

a=b[1]

b=b[0].name

document.write(a+'<br/>')

document.write(b)

正在回答 回答被采纳积分+1

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

4回答
好帮手慕星星 2020-02-21 13:55:24

同学你好,是达不到交换效果的。a是一个对象,在对象中添加内容,获取的时候只能通过属性名获取。而我们需要的b值是整个对象,而不是只有name属性值xm ,可以不考虑这种方式。

祝学习愉快!

好帮手慕星星 2020-02-21 10:56:44

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

1、第一段代码

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

如果两个赋值交换位置

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

主要是两个值都赋值给了a,如果首先改变a的值,那么b的值就不会是从原来一开始的值获取。

2、第二段代码

(1)交换位置和第一段代码是同理的,通过push方法将两个值都放在了b变量中,就不能提前改变b的值。

(2)控制台报错了,可以看一下

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

a是字面量对象,不能使用push方法,只有数组才可以使用push方法。

3、是document.write()方法的问题,会将字面量对象{}转化成字符串输出,所以是[object Object],数组输出是正常的。可以用console.log()在控制台查看对象输出。

4、a = [];这样是把a变量赋值为空数组,原来a是一个对象{},没有0属性,所以a[0]是不可取,所以设置为属性,从数组b中获取4,然后放在a数组中,那么a就是[4]。

代码中输出的是b.name,调用属性输出属性值,所以值是xm,没有问题。如果想要输出整个对象,可以用console.log()方法查看结果。

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

  • 提问者 陈立天 #1
    那 2. (2) 这里的的问题,字面量对象不能用push方法,那用什么方法可以添加字面量对象?就是如果我想反过来,不是B添加A ,而是A添加B 要怎么写?
    2020-02-21 11:47:58
提问者 陈立天 2020-02-20 22:20:17
 var a = {name: 'xm'}, b = [4];

    /*此处添加代码*/

    b.push(a);

    a = [];

    a[0] = b[0];

    document.write("a=" + a+ "<br>");

    b = b[1];

    document.write("b=" + b.name + "<br>");

还有看了这个同学的代码,这里的a = []; 是什么意思? 为什么去掉以后,和前面的结果一样,.name的话它取的值为什么变为了XM?

提问者 陈立天 2020-02-20 21:41:06

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

另外很神奇的发现 把这中间的代码删除了 输出的结果为什么是这样的?

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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