首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此示例的JavaScript代码说明?

此示例的JavaScript代码说明?
EN

Stack Overflow用户
提问于 2015-04-30 16:46:09
回答 4查看 82关注 0票数 3

大家好!,我在JavaScript上完成了几个简短的课程,现在我转到了has : JavaScript,这是一件很有趣的事情,正在帮助巩固我的学习。不过,我确实遇到了一些我不明白的事情。在下面的代码中,我了解程序在执行时通常会做什么,但是在试图跟踪执行的每一步时,我意识到我被特定段的“什么/为什么/如何”弄糊涂了。下面是我正在查看的示例程序的代码:

代码语言:javascript
复制
function makePhrases() {

            var words1 = ["24/7", "multi-tier", "30,000 foot", "B-to-B", "win-win"];

            var words2 = ["empowered", "value-added", "oriented", "focused", "aligned"];

            var words3 = ["process", "solution", "tipping-point", "strategy", "vision"];



            var rand1 = Math.floor(Math.random() * words1.length);

            var rand2 = Math.floor(Math.random() * words2.length);

            var rand3 = Math.floor(Math.random() * words3.length);



            var phrase = words1[rand1] + " " + words2[rand2] + " " + words3[rand3];

            alert(phrase);

        }

        makePhrases();

这是我一直困惑的部分:

代码语言:javascript
复制
            var rand1 = Math.floor(Math.random() * words1.length);

            var rand2 = Math.floor(Math.random() * words2.length);

            var rand3 = Math.floor(Math.random() * words3.length);

我知道,是代码的一部分随机选择了每个数组中的哪个项来形成新的“随机短语”,但我不明白它是如何做到的。我之前也不知道Math.random或Math.floor可以应用于字符串(必须是因为它们在数组中,实际上是一个数字?),也不知道如何/为什么对字符串使用Math.random或Math.floor。

另外,为什么我们需要在这个化身中使用.length呢?是干什么的呢?我感谢你在这里的智慧,并花时间帮助那些刚开始编写代码,但仍然有很多东西需要学习的人!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-30 16:51:36

让我们看看代码:

代码语言:javascript
复制
var rand1 = Math.floor(Math.random() * words1.length);

Math.random()00.999999..之间返回一个数字。

words1是可供选择的单词列表。

words1.length是列表的大小、条目的数量、本例中的5

Math.random() * words1.length04.99999..之间返回一个数字。

最后,使用Math.floor()获得04之间的整数。

然后,这个数字在words1中用作索引,因此words1[rand1]

因此,Math操作永远不会在字符串上使用,只在最后一步获取字符串。

票数 3
EN

Stack Overflow用户

发布于 2015-04-30 16:49:02

正在发生的一切是,Math.random()被用作相应数组( '.length‘属性)中元素数的乘数,以创建索引值。它不应用于字符串;只是作为表达式的一部分来确定字符串数组中的索引。

票数 2
EN

Stack Overflow用户

发布于 2015-04-30 16:51:27

您想从数组中选择一个随机元素。因此,您需要一个索引,换句话说,从04 (因为您的长度是5)的随机数。Math.random将给出01之间的随机数(不包括1)。因此,要将其转换为0到4之间的随机数,需要乘以5的长度。

然后,由于我们需要一个整数,而不是浮点数,所以我们使用Math.floor将其截断为整数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29973409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档