javascript连续赋值问题

 更新时间:2015年07月08日 11:00:48   投稿:hebedich  
本文通过具体的示例来给大家详细解释了下javascript的连续赋值问题,十分的实用,有需要的小伙伴可以参考下。

前几天在搜索面试题时发现了这么一段代码,执行完后感觉完全不与所想的一样

 var a = {
   n : 1
 };
 var b = a;
 a.x = a = {n : 2};
 console.log(a.x);
 console.log(b.x);

输出结果为:

undefined

[object Object]

一开始以为语句应该是先给 a 赋值 {n : 2} , 然后再将 a.x 赋值 {n : 2} ;

但事实却不是那样,于是改动了一下代码,添加几条log

var test;
var a = {
  get test () {
    console.log("call a get");
    return test;
  },
  set test (value) {
    console.log("call a set");
    test = value;
  }
}
var test2;
var b = {
  get test2 () {
    console.log("call b get");
    return test2;
  },
  set test2 (value) {
    console.log("call b set");
    test2 = value;
  }
}
a.test = {
  n : 1
};
b.test2 = a.test;
console.log("begin");
a.test.x = a.test = {n : 2};

这样,在begin后边,这条赋值到底执行了什么就一目了然了.

这是语句执行时打印的log

先触发了一次get,然后触发了一次set.

本人猜想,该条语句执行的顺序为,先将左边变量取出,然后执行赋值.(在执行该条语句前,先将对象引用取出,然后从右到左执行赋值)


以上所述就是本文的全部内容了,希望大家能够喜欢

相关文章

  • JS实现深拷贝的几种方法介绍

    JS实现深拷贝的几种方法介绍

    这篇文章介绍了JS实现深拷贝的几种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 前端uniapp封装网络请求以及实际应用教程

    前端uniapp封装网络请求以及实际应用教程

    这篇文章主要给大家介绍了关于前端uniapp封装网络请求以及实际应用的相关资料,在uniapp中进行网络测试请求可以通过封装网络请求来实现,文中给出了详细的代码实例,需要的朋友可以参考下
    2024-01-01
  • JS正则中的RegExp对象对象

    JS正则中的RegExp对象对象

    JavaScript提供了一个RegExp对象来完成有关正则表达式的操作和功能,每一条正则表达式模式对应一个RegExp实例
    2012-11-11
  • 简单的js计算器实现

    简单的js计算器实现

    这篇文章主要为大家详细介绍了如何实现简单js计算器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • js中map()函数的使用案例详解

    js中map()函数的使用案例详解

    map()方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值,这篇文章主要介绍了js中map()函数的使用,需要的朋友可以参考下
    2022-11-11
  • js前端解决跨域的八种实现方案

    js前端解决跨域的八种实现方案

    这篇文章主要介绍了js前端解决跨域的八种实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • js中几种去掉字串左右空格的方法

    js中几种去掉字串左右空格的方法

    js中几种去掉字串左右空格的方法...
    2006-12-12
  • 分享12个非常实用的JavaScript小技巧

    分享12个非常实用的JavaScript小技巧

    这篇文章主要介绍了分享12个非常实用的JavaScript小技巧,这些小技巧可能在你的实际工作中或许能帮助你解决一些问题,需要的朋友可以参考下
    2016-05-05
  • javascript学习网址备忘

    javascript学习网址备忘

    javascript学习网址备忘...
    2007-05-05
  • 基于JavaScript实现点击页面任何位置返回

    基于JavaScript实现点击页面任何位置返回

    这篇文章主要介绍了基于JavaScript实现点击页面任何位置返回的实例代码,需要的朋友可以参考下
    2016-08-08

最新评论