北京沣登科技发展公司

j***ascript引擎分数,js的引擎

大家好,今天小编关注到一个比较意思的话题,就是关于javascript引擎分数问题,于是小编就整理了2个相关介绍JavaScript引擎分数的解答,让我们一起看看吧。

  1. js实现最简分数表达式求和?
  2. JavaScript中函数都是值传递吗?

js实现最简分数表达式求和

答:有一个这样的数组数组- const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]]; 请注意,虽然数组可以具有任意数量的元素,但是每个子数组应严格包含两个数字。 每个子数组中的两个数字代表一个分数。像第一个子数组表示的分数是12/56,第二个子数组表示的分数是3/45,依此类推。

我们需要编写一个javascript函数,该函数接受一个这样的数组并计算所有子数组表示的分数之和。

javascript引擎分数,js的引擎div>
图片来源网络,侵删)

我们需要以分数形式计算总和(即,不将其转换小数)。 并将总和作为表示结果分数的两个元素的数组返回

JavaScript可以实现最简分数表达式的求和。

J***aScript可以通过编写函数来实现最简分数表达式的求和,例如,可以编写一个函数,先将多个分数表达式的分子和分母通分,然后将分数相加,最后将结果化为最简分数。

javascript引擎分数,js的引擎
(图片来源网络,侵删)

J***aScript还可以通过使用第三方库来实现更方便的分数计算,例如Fraction.js库,可以轻松实现分数的加、减、乘、除等计算操作

Js要实现最简分数表达式求和,就需要实现分子和分母的最简式。

我们可以把分子和分母储存在一个只有两个维度的数组之中,对分子和分母使用辗转相除法来实现最简分数的表达。

javascript引擎分数,js的引擎
(图片来源网络,侵删)

再用交叉相乘法实现求和。

要实现分数表达式的求和,可以***用以下思路:

1. 将分数表达式转化为分数数组,例如:1/2 + 3/4 = [[1, 2], [3, 4]]

2. 将分母不为1的分数化简为最简分数,例如:[[1, 2], [3, 4]] => [[1, 2], [1, 2]]

3. 将分子为1的分数直接转化为整数,例如:[[1, 3], [1, 2]] => [1, 1, 2]

4. 对整数数组进行求和运算得到最终结果。

实现代码如下: js

function sumFraction(expr) {

let nums = [];

let denoms = [];

要实现最简分数表达式的求和,首先需要实现两个分数相加的函数。以下是用J***aScript实现最简分数表达式求和的示例代码:

```j***ascript

// 求最大公约数

function ***(a, b) {

  if (b === 0) {

    return a;

  }

  return ***(b, a % b);

}

J***aScript中函数都是值传递吗?

值传递在不同层面有不同的意义!

你可以认为J***aScript的函数调用参数都是值传递,也可以认为分值传递和引用传递两种!这两种情况下<span style="font-weight: bold;">值传递的含义并不同,但是后者是大部分程序员最先接触的。

如果你能明白我下面说的,就不会再在这上面困惑,换到其它语言也同理。

语言设计层面

J***aScript的类型设计里有基本类型(值类型)和引用类型两种,基本类型分配在堆栈,或者依附于引用类型存储在堆中。看到值类型存储在堆中,估计很多人就要开始吐槽了!但是要冷静,从内存角度好好想一想引用类型的实例到底是什么?它不过是一堆值类型和内嵌其它引用类型的组合而已。这样递归想下去,你会明白,最终的数据都是靠基本的值类型来承载的。也就是堆里面除了少部分引用对应的数据结构,大部分都是值类型数据。在考虑值类型和引用类型的区别时,你考虑过这点么?

从语言层次表现上来看:函数的参数传递,值类型会被复制一份,引用类型的引用会被***一份,此时两个引用指向同一个副本。如果你访问修改引用类型的数据字段,实际上修改的是同一份数据这个比较容易理解吧?

所以从这个层面上可以说分值传递和引用传递两种。这里的值传递和引用传递其实包含了语言特性在里面。

函数调用角度

***设我们不理会语言对于基本类型或者值类型的设计,单单从函数调用角度看呢?

通过上面的描述,你已经知道,值类型被***了一份,引用也被***了一份,从函数自身的角度出发,它只完成了***功能,对于基本类型,它***基本类型代表的数据,对于引用类型,它***引用类型的引用(如果放在C语言,把引用换成指针可能更直观)。

本质上来看,函数调用在参数处理这一块,只做了***处理,所以你可以说它是值传递。只不过这里的值其实包含了上面语言层面的两个东西:值类型的值、引用或指针。

总结

统一概念的内涵是我们程序员碰到的最大问题,这里的值传递就是典型的问题。本质只有一个,但是大家站在不同角度,不同层次,就会赋予概念不同的内涵,如果内涵都不同,就来讨论结论问题,是没有结果的。

到此,以上就是小编对于j***ascript引擎分数的问题就介绍到这了,希望介绍关于j***ascript引擎分数的2点解答对大家有用。

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。 转载请注明出处:http://www.fengdengtech.com/post/34269.html

分享:
扫描分享到社交APP