用于交换两个变量的 JavaScript 函数
javascript function to swap two variables
function swap(x,y){
var t=x;
x=y;
y=t;
}
当你swap(a,b)
时,变量a
和b
被复制到函数中,无论该函数中发生什么,都不会影响a
和b
的实际值。我想要这样的东西:
(function(){
a=1;
b=2;
function swap(){//something}
swap(a,b);
console.log(a) //2
console.log(b) //1
})()
怎么做?
如果您使用的是最新版本的JavaScript(ES2015(,则可以使用称为"解构"的新语言功能。 你不需要函数。 它看起来像这样:
let a = 1;
let b = 2;
// swap!
[b, a] = [a, b];
如果你想要一个函数,你可以这样做:
function swap(a, b) {
return [b, a]
}
[a, b] = swap(a, b);
查看此代码,我更喜欢该函数,尽管它有点多余。 我喜欢它的表现力。 您不会对代码的作用感到困惑。
你不能。参数是按值传递的,即使在对象的情况下也是如此。只是为它们传递的值是对对象的引用。
基本上,这意味着您收到的任何参数与您传入的原始变量都没有实际联系,除了它们可能共享引用。
想象一下,你在一张纸上写了a
和b
。在 JS 中,与函数共享这些值的唯一方法是将它们复制到另一张纸上并将其交给函数。因此,即使该功能在新纸上划掉a
并用b
替换它,它也不会改变您在原始纸上写的内容。
简而言之,不可能更改用作函数参数的变量的值。
如上面的答案所述,参数仅按值传递。如果确实需要实现交换,可以使用 2 个变量算法:
var a = 10, b = 20;
a = a + b;
b = a - b;
a = a - b;
console.log (a+" "+b); // 20 10
您可以在函数范围之外设置一个变量,以便您可以在函数内使用它,这是您可以做的事情:
<head>
<script>var x=0, y=1;</script>
</head>
<script>
function swap()
{
var t = x;
x = y;
y = t;
}
</script>
甚至这有效
<script>
var x=0; y=1;
function swap(id1, id2)
{
var t = x;
x = y;
y = t;
}
console.log(x+" "+y);
</script>
我经常使用它并且工作正常。 x
和y
可以从任何地方获取,并且可以在函数内工作没有问题。你也可以做
function(id1, id2)
{
x=document.getElementById(id1);
y=document.getElementById(id2);
var t = x.value;
x.value = y.value;
y.value = t;
}
function swap(value) {
value.first = value.first + value.second;
value.second = value.first - value.second;
value.first = value.first - value.second;
}
// declared an object named value which has two keys - first and second corresponding to the first and the second values respectively
var value = {
first: 1,
second: 2
}
console.log(value.first, value.second) // prints 1 2
swap(value);
console.log(value.first, value.second); // prints 2 1
相关文章:
- 调用类向后变量 (JavaScript)
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- 可以'找不到变量javascript错误
- 输出数组变量javascript
- 自提交表单访问变量javascript
- 将变量 javascript 添加到用于旋转图像的链接中
- 在文本字段中显示保存的本地存储变量 - javascript
- 将变量添加到变量 JavaScript 中
- 获取要在变量 JavaScript 中使用的用户输入值
- 如何在变量 Javascript 中删除双引号
- 使用变量 javascript 从 json 文件中获取数据
- 读取输入和打印变量 - JavaScript 和 HTML 4.01
- 传递 PHP 变量 JavaScript 窗口位置
- 重置变量 JavaScript
- 变量 JavaScript 中的变量
- 尝试使用多个函数时无法使用全局变量 - JavaScript - 初学者
- 如何按值将数组分配给另一个变量 JavaScript
- setTimout 搞砸了变量 JavaScript
- 用内部函数变量更改外部函数变量?Javascript
- 根据变量 JavaScript 增加