首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript两个变量交换值(不使用临时变量

概要 本文主要描述,如何不使用中间值,将两个变量值进行交换。  前三种只适用于number类型数值交换,第四和第五种适合其他类型。...一、普通做法 var a = 1, b = 2, tmp; tmp = a; a = b; b = tmp; 普通做法就是声明多一个临时变量tmp,进行数据交换过程中缓存。...,可以巧妙地将两个值进行互换。...但是,有个缺点就是变量数据溢出。因为JavaScript能存储数字精度范围是 -253 到 253。所以,加法运算,会存在溢出问题。...四、ES6解构 let a = 1, b = 2; [a, b] = [b, a]; 用解构语法特性,一次性解决,简单暴力,哈哈哈~  **更重要一点:**解构语法还适用于其他类型变量进行互换

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端基础-JavaScript交换变量

    0.4 案例:交换变量值 临时变量、加减运算、数组方式、对象方式 0.5 数组遍历 for()循环 for in索引遍历 数组.forEach方法 for of 值遍历(ES6) 0.6...数据在内存中存储 内存地址分区: ?...) 堆区存数据, 栈区存数据在堆区地址 var obj = {"age":40, "sex":"男"}; 变量 栈区 堆区 堆区地址 obj 00000001(堆区地址) {“age”:40, “...栈区 堆区 堆区地址 obj 00000001 {“age”:30, “sex”:“男”} 00000001 obj2 00000001 传值方式: 值传递 :基本数据类型,直接将变量放在栈区值...引用传递:对象类型,将变量放在堆区地址,传给另外一个变量。 js中,对象(object , array, function), 传递过程中,都使用引用传递。

    1.2K10

    不借助变量交换两个

    不借助变量交换两个数 我们在平时写代码过程之中,竟然会有交换两个变量需求。然而我们大多数还是会采用借助额外变量方式,因为这种方式不仅简单,容易理解,可读性高, 更重要是适用范围广。...那么今天我们来研究一下《如何不借助变量交换两个数》。 借助额外变量 在正式解这道题之前,我们先用最基础借助额外变量方法来做一下。...JavaScript代码: var a = 1; var b = 2; var temp = a; a = b; b = temp; 这个过程就像交换两个杯子中水一样,如果不借助任何外物,显然我们不能用常规方法交换两个杯子水...JavaScript代码: var a = 1; var b = 2; b = a + b; a = b - a; b = b - a; 但是 a 和 b 和溢出风险,其实我们只要稍加变通一下即可...这在两个数字都非常大,以至于两个加起来 无法用数字表示时候非常有用。 ?

    82920

    【说站】python交换两个变量

    python交换两个变量值 本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。 1、在python中独一无二,也是最简单方法。...a,b=b,a 2、引入第三个变量,可以看作是两个装满牛奶瓶子a和瓶子b。如果我想在这两个瓶子里换牛奶,我需要一个空瓶子temp。首先,将a瓶中牛奶倒入空瓶子temp中。...这时,a瓶是空,b瓶中牛奶可以倒入a中,然后将temp中牛奶倒入b中,从而实现交换。...不可用) 已知a, b >>> a = 2 >>> b = 5 >>> a = a^b >>> a 7 >>> b = a^b >>> b 2 >>> a = a^b >>> a 5 >>> 4、采用特殊运算方式...a=a+b b=a-b a=a-b 以上就是python交换两个变量方法,一般来说python自带方法是快速而简单,对于其他交换方法,大家可以在实例中进行体会。

    71820

    4种在JavaScript交换变量方法

    许多算法需要交换2个变量。在编码面试中,可能会问您“如何在没有临时变量情况下交换2个变量?”。我很高兴知道执行变量交换多种方法。...它适用于任何数据类型:数字,字符串,布尔值,对象。 对于大多数情况,我建议使用解构赋值来交换变量。 2、 临时变量 使用临时变量交换变量是经典。顾名思义,这种方法需要一个额外临时变量。...提醒一下,这是 XOR 真值表: a b a ^ b 0 0 0 1 1 0 0 1 1 1 0 1 在JavaScript中,按位 XOR 运算符 n1 ^ n2 对n1和n2数字每一位执行 XOR...这些 XOR 属性可用于交换变量。...5、结论 JavaScript提供了很多交换变量好方法,无论有没有额外内存。 我建议使用第一种方法通过应用解构赋值[a,b] = [b,a]交换变量。这是一种简短而富有表现力方法。

    3K30

    Python中有几种办法交换两个变量值?

    废话不多说,开始今天题目: 问:说说Python中有几种办法交换两个变量值? 答:交换两个变量值方法,这个面试题如果只写一种当然很简单,没什么可以说。...今天这个面试是问大家有几种办法来实现交换两个变量值 。在没开始看具体答案前,你可以先想想看 。...下面分别来说说这几种方法: 1、方法一 通过新添加中间变量temp方式,这个方法是最简单,每个语言都适用。...def swap(a,b): temp = a a = b b = temp print(a,b) 2、方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元组中...通过按位异或运算来交换变量值,可以减少变量定义,同时减少计算机对代码解析时间。

    1.2K30

    Python中有几种办法交换两个变量值?

    废话不多说,开始今天题目: 问:说说Python中有几种办法交换两个变量值? 答:交换两个变量值方法,这个面试题如果只写一种当然很简单,没什么可以说。...今天这个面试是问大家有几种办法来实现交换两个变量值 。在没开始看具体答案前,你可以先想想看 。...下面分别来说说这几种方法: 1、方法一 通过新添加中间变量temp方式,这个方法是最简单,每个语言都适用。...def swap(a,b): temp = a a = b b = temp print(a,b) 2、方法二 Python独有的方法,一行代码就能搞定,直接将两个变量放到元组中...通过按位异或运算来交换变量值,可以减少变量定义,同时减少计算机对代码解析时间。

    80720

    不用临时变量 优雅、高效交换两个数方法

    这显然不是正确做法。...到目前为止,我们答题思路是没错,就是寻找另外一种数据存储模式,用一个变量保存两条信息集合,我们仍然需要采用这种模式解决这个问题,但原先简单相加模式是不行了,于是我们想到,集合两个整型数字,是否可以从其二进制表达方面来考虑...用 1 和 0 来做简单验证,看是否可以用异或方式,存储信息集合: 如果两个数是a = 1和b = 0,则: 集合 = 1 0 异或 集合 = 1 1 异或 集合 = 0 如果 a = 1 & b...= 1 集合 = 0 1 异或 集合 = 1 如果 a = 0 & b = 0 集合 = 0 0 疑惑 集合 = 0 验证结果: 可以采用信息集合方式存储 那么我们交换代码可以变成(C实现):...,应该算是就地交换两个最佳解决方案了。

    79040

    你会不借助变量交换两个数么?

    平时写代码过程之中,经常会有交换两个变量需求。然而我们大多数还是会采用借助额外变量方式,因为这种方式不仅简单,容易理解,可读性高, 更重要是适用范围广。...那么今天我们来研究一下《如何不借助变量交换两个数》。 借助额外变量 在正式解这道题之前,我们先用最基础借助额外变量方法来做一下。...JavaScript代码: var a = 1; var b = 2; var temp = a; a = b; b = temp; 这个过程就像交换两个杯子中水一样,如果不借助任何外物,显然我们不能用常规方法交换两个杯子水...JavaScript代码: var a = 1; var b = 2; b = a + b; a = b - a; b = b - a; 但是 a 和 b 和溢出风险,其实我们只要稍加变通一下即可...这在两个数字都非常大,以至于两个加起来 无法用数字表示时候非常有用。 ?

    1.2K10

    javascript——函数变量和方法

    基本上所有的高级语言都支持函数javascript也不例外,它可以像变量一样被使用,方便且强大,因此本文对js函数进行系统学习,并在学习过程中做了详细笔记以及样例。...function fun() { var a = 1; }; a = a + 1; // err 这行代码直接报错,因为全局中没有a这个变量 如果两个函数体中各自声明了变量a,互不干扰,在自己函数体内可以正常作用...,y无法被访问,因此var z = x + y报错 两个嵌套函数体,各有一个重名变量,js函数在查找变量时候,优先从自身开始,如果自身有这个变量就获取,如果没有,有内向外,由下层到上层查找 function...son()和par() 2.变量提升 JavaScript函数定义有个特点,它会先扫描整个函数语句,把所有申明变量“提升”到函数顶部,但是并不会将赋值一起提升,很容易产生代码报错 因此,针对这一问题...,在赋值语句外部包裹一层()小括号 ({x, y} = { name: '小明', x: 100, y: 200}); 7.解构赋值使用场景 交换两个变量值 var a = 1; var b = 2

    1.1K20

    简洁javascript编码(一)--变量函数

    类似与函数单一职责,当你函数超过一层抽象时,说明你函数做太多事情了。.../temp/${name}`); } ---- 避免副作用 如果某个函数除了接收输入值与返回值之外还做了其他事,那么就称其具有副作用。典型副作用譬如写文件、修改某些全局变量、修改内存参数等等。...Bad: // 定义全局变量 // 如果我们有其他函数引用了该变量,那么我们就无法预测该变量类型 let name = 'Ryan McDermott'; function splitIntoFirstAndLastName...由于你修改导致污染全局变量,可能导致另外一个库使用者在不知情情况下出现生产环境异常。...例如,你想扩展Array方法diff,用于区分2个数组不同。你可能通过Array原型链扩展,但可能导致其他库diff方法失效,例如找出一个数组第一跟最后一个元素不同方法。

    1.3K10

    简洁javascript编码(一)--变量函数

    类似与函数单一职责,当你函数超过一层抽象时,说明你函数做太多事情了。.../temp/${name}`); } ---- 避免副作用 如果某个函数除了接收输入值与返回值之外还做了其他事,那么就称其具有副作用。典型副作用譬如写文件、修改某些全局变量、修改内存参数等等。...Bad: // 定义全局变量 // 如果我们有其他函数引用了该变量,那么我们就无法预测该变量类型 let name = 'Ryan McDermott'; function splitIntoFirstAndLastName...由于你修改导致污染全局变量,可能导致另外一个库使用者在不知情情况下出现生产环境异常。...例如,你想扩展Array方法diff,用于区分2个数组不同。你可能通过Array原型链扩展,但可能导致其他库diff方法失效,例如找出一个数组第一跟最后一个元素不同方法。

    1.5K20

    异或运算巧用 → 不用额外变量,如何交换两个变量值?

    0 = N   一个值与 0 做异或运算,得到结果仍是这个值   例如:15 ^ 0 = 15   N ^ M = M ^ N   同加法有交换律、乘法也有交换律一样,异或运算也有交换律   例如...,让大家好好感觉感觉   不用额外变量交换两个变量值   楼主在以往面试过程中,确确实实被面到过这个问题,关键是当时没答上来   这个问题考点就是 XOR   假设这两个变量分别是 N(值为...:额外空间复杂度 O(1)   这时候就该 XOR 出马了,我们结合 N ^ N = 0 、异或交换律、异或结合律,可推算出:这串数字全部进行异或运算,最终结果就是出现了奇数次那个数字   ...此时额外空间复杂度是 O(1) ,只用到了两个额外变量: eor 、 cur   找出 1 至 n 中缺少那个数   问题详细描述:一串数字包含 n-1 个成员,这些数字是 1 到 n 之间整数...  这个解法没那么好理解,大家好好琢磨琢磨 总结   1、 XOR 用来判断同位上值是否不同   2、 出现奇数个 、 偶数个 、 缺失 、 重复 字眼,可以往 XOR 考虑   3、关于 不用额外变量交换两个变量

    1.4K10
    领券