JavaScript不定义临时变量的方式,其实也可以玩转两个整数的交换

点击上方蓝字关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!

首先进一步解释一下题意:所谓两个整数交换,就是当我们给一个函数传两个参数(a,b)时,返回的是(b,a)。

一、常规做法

我们通常的做法是借助一个中间变量来解决,惯性代码如下所示:

JavaScript不定义临时变量的方式,其实也可以玩转两个整数的交换

输出结果就是:6,5。

上面这段代码我们在函数内部定义了一个临时变量s,将a先暂存在到了这个变量上。然后将b赋值给了a,先改变了a的值,最后将中间变量s的值传给了b,从而就实现了交换。

这有点像买东西,为了保障安全,需要有个中间人一样.....

二、巧妙做法

然而,这个问题,也可以换一种形式来玩。两个主要点:

1、利用a,b差值做为中间变量(这就不需要在增加额外的资源消耗了)

2、运用a = a + (b-a)等同于a = b的形式

具体代码如下所示:

JavaScript不定义临时变量的方式,其实也可以玩转两个整数的交换

输出结果就是:6,5。

上面代码先将b-a的值做为一个中间变量,然后,在巧妙的利用a+(b-a)和a-(b-a)实现a和b的置换。

总结一下:

JavaScript代码写起来很简单,但要写出一段好的JavaScript代码,往往需要思考和学习。


分享到:


相關文章: