当前位置:首页 > 日记 > 正文

js中变量的连续赋值 | 实例讲解

js中变量的连续赋值 | 实例讲解

今天遇到了一个连续赋值的经典案例,网友们给出的答案也是五花八门,看起来有些繁琐,我也来说说自己的看法。

下面就是这个经典案例:

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

我们先来看一下普通连续赋值,即:变量赋值的类型是数据类型值

var a=3;var b=a=5;console.log(a);console.log(b);

一般来说,等号赋值的方向是从右至左,那么上面的代码等同于下面这段代码,那么我们就用下面这段代码来解释上面的代码:

var a=3;  //全局变量a被赋值为3var a=5;  //此时a被重新赋值为5var b=a;  //将a的值赋给全局变量bconsole.log(a);//a最终的值就是第二次被赋的值:5console.log(b);//按照代码执行顺序b的值也是:5

上面的小案例用来抛砖引玉,现在我们来分析这个经典案例:

var a = {n: 1};//a第一次被赋值,是一个引用类型值,请记得变量赋值为引用类型值的时候,通过变量改变这个对象的时候,对象本身也发生了变化var b = a;//b被赋值为a,因此b就是对象{n:1}a.x = a = {n: 2};//这个赋值与之前的简单案例有所不同,a.x指的是给a添加一个x属性,在js的运算中“.”和"="运算符同时出现,会先执行"."运算//因此,赋值顺序被改变了,是先给a.x赋值,再给a赋值//就是先执行:a.x={n:2},注意这里a并未改变,是给a的x属性赋值为{n:2},a还是{n:1}//再回到我代码中的第一句话,这个赋值行为,改变了{n:1}这个对象,即给它增加了名为x的属性//再执行a={n:2},这是变量a不再是对象{n:1},而被重新赋值为一个新的对象{n:2};console.log(a);//自然此时a是对象{n:2}console.log(b);//a的二次赋值,并没有影响b,b还是对象{n:1},但是由于a在重新赋值之前,给{n:1}这个对象,增加了一个x属性,因此,这时的b已经有了x属性console.log(a.x);//{n:2}对象没有x属性,所以结果是undefinedconsole.log(b.x);//综上所述,这个结果是{n:2}

以上这篇js中变量的连续赋值(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

WPS演示中如何插入项目符号及调整

WPS演示中如何插入项目符号及调整

调整,项目,插入项目,符号,演示,  通常情况下我们都会用到项目符号或者编号在写演示文稿时罗列出一些重点,那么在wps演示中如何插入项目符号及编号。以下是小编为您带来的关于WPS演示中插入项目符号及调整项目符号,希望对您有所帮助。WPS演…

JS基于贪心算法解决背包问题示例

JS基于贪心算法解决背包问题示例

贪心算法,背包问题,示例,电脑软件,JS,本文实例讲述了JS基于贪心算法解决背包问题。分享给大家供大家参考,具体如下:贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部…

AI怎么给圆形添加模糊效果?

AI怎么给圆形添加模糊效果?

模糊,效果,电脑软件,AI,ai的图形想要显示的更加模糊,该怎么添加模糊效果呢?下面我们就来看看详细的教程。软件名称:Adobe Illustrator CS6 (AI cs6) 精简绿色中文版(32位+64位)软件大小:205MB更新时间:2014-05-111、为了清晰说明,此例中以一个圆…

excel 函数不显示计算结果的解决教

excel 函数不显示计算结果的解决教

函数,显示,教程,计算,电脑软件,  Excel中函数计算过后不显示计算结果具体该如何解决呢?下面是由小编分享的excel 函数不显示计算结果的解决教程,以供大家阅读和学习。excel 函数不显示计算结果的解决教程不显示结果解决步骤1:输入后显示了…

js字符串与Unicode编码互相转换

js字符串与Unicode编码互相转换

编码,转换,字符串,电脑软件,js,'好'.charCodeAt(0).toString(16)"597d"这段代码的意思是,把字符'好'转化成Unicode编码,看看charCodeAt()是怎么个意思charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 …

excel 公式符号解释

excel 公式符号解释

解释,公式,符号,电脑软件,excel,  在Excel中经常需要用到公式符号进行对公式的编辑,如果对公式符号不熟悉的话运用起公式来就不太熟练就会导致工作效率下降,或许有的朋友并不知道公式符号起如何的作用,如果不懂的朋友欢迎一起来研究讨论一番…

babel基本使用详解

babel基本使用详解

详解,电脑软件,babel,什么是babel?babel是一个强大的多用途js编译器 点击进入官网安装babelnpm install -g babel-cli npm install --save-dev babel-clibabel配置文件通过.babelrc来表示{ "presets" : [ ], "plugins" : [ ]}presets用…

ps人像精修之中性灰人像修图详细解

ps人像精修之中性灰人像修图详细解

人像,详细,电脑软件,ps,一说到中性灰,都感觉很高大上,其实搞懂后也不算难,就是一个图层的事儿,今天赶紧给大家带来了利用中性灰图层修容的教程,希望能够拯救大家干瘪的钱包。效果图软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1…

Illustrator绘制绚丽科技风格的蓝

Illustrator绘制绚丽科技风格的蓝

绘制,光线,绚丽,背景,风格,这篇教程是向分享Illustrator绘制绚丽科技风格的蓝色光线背景方法,教程制作出来的背景非常漂亮,而且难度不是很大,对于初学者来说是个很好的学习案例,一起来学习吧!步骤:教程结束,以上就是Illustrator绘制绚丽科技风格的…

Vue 2.5 Level E 发布了: 新功能特

Vue 2.5 Level E 发布了: 新功能特

新功能,特性,发布了,电脑软件,Vue,我们很高兴宣布 Vue 2.5 Level E 的发布!本次发布包括多个功能提升并且我们推荐你查看发布说明来获取完整详细信息。 在这篇文章中,我们将重点介绍一些更重要的的变化:更好的 TypeScript 集成,更好的错误处理…

excel中设置X轴为时间轴的方法exce

excel中设置X轴为时间轴的方法exce

设置,时间轴,方法,电脑软件,excel,  Excel中的时间轴具体该如何在X轴上设置呢?下面是由小编分享的excel中设置X轴为时间轴的方法,以供大家阅读和学习。excel中设置X轴为时间轴的方法设置时间轴步骤1:用excel 打开一个带有图表的数据表excel…