Javascript 下面两个代码之间有什么区别(我运行了它们,但它们给出了不同的输出)

Javascript 下面两个代码之间有什么区别(我运行了它们,但它们给出了不同的输出),javascript,arrays,function,Javascript,Arrays,Function,我正在用JavaScript进行一项挑战,指导是将志愿者人数和社区人数分开 我使用.length数组方法来获取长度并执行操作,但有一件事让我感到困扰,我尝试了两种方法,一种通过测试,另一种无法通过测试,代码如下 这个通过了测试 const function(volunteers, neighborhood){ let neighborhoodLent = neighborhood; let volunteersLength = volunteers.length let evalua

我正在用JavaScript进行一项挑战,指导是将志愿者人数和社区人数分开

我使用
.length
数组方法来获取长度并执行操作,但有一件事让我感到困扰,我尝试了两种方法,一种通过测试,另一种无法通过测试,代码如下

这个通过了测试

const function(volunteers, neighborhood){
  let neighborhoodLent = neighborhood;
  let volunteersLength = volunteers.length
  let evaluate =  neighborhoodLent / volunteersLength;

  return evaluate;
}
下面这一个没有通过测试

const function(volunteers, neighborhood){
  return volunteers.length / neighborhood.length
}
当给定一个如下所示的数组时

const volunteers = [
  'Sally',
  'Jake',
  'Brian',
  'Hamid'
];

const neighbourhoods = [
  'Central Valley',
  'Big Mountain',
  'Little Bridge',
  'Bricktown',
  'Brownsville',
  "Paul's Boutique",
  'Clay Park',
  'Fox Nest'
];
输出应该是2

我现在关心的是了解我使用的两种方法之间的区别,以及为什么另一种方法通过了,而另一种方法失败了。
我将非常感谢您帮助我澄清

看来您使用了不正确的语法来声明函数。请注意,
function
是JavaScript中的保留关键字。所以
const函数{…}
是无效语法。您应该在
函数
关键字后命名函数。试着这样写:

const志愿者=[
“莎莉”,
“杰克”,
“布莱恩”,
“哈米德”
];
康斯特街区=[
"中央谷",,
“大山”,
“小桥”,
“砖头镇”,
“布朗斯维尔”,
“保罗精品店”,
“粘土公园”,
“狐窝”
];
功能计算(志愿者、社区){
返回neighbory.length/志愿者.length;
}
const constCalc=(志愿者、社区)=>{
返回neighbory.length/志愿者.length;
}
console.log(`通常的声明',calc(志愿者,邻居));

log(`arrow函数:`,constCalc(志愿者,邻居))结果应相同

  • 在方法
    two
    中,而不是
    志愿者.length/邻里.length
    中,它应该是
    邻里.length/志愿者.length
    ,因为在除法等数学运算中,因子的顺序会改变结果
固定代码:

const志愿者=['Sally','Jake','Brian','Hamid']
康斯特街区=[‘中央山谷’、‘大山’、‘小桥’、‘砖镇’、‘布朗斯维尔’、‘保罗精品店’、‘粘土公园’、‘狐狸巢’]
康斯特一号=(志愿者、社区)=>{
常数邻域长度=邻域长度
const志愿者长度=志愿者长度
const evaluate=邻里长度/志愿者长度
回报评估
}
const two=(志愿者、社区)=>{
返回邻居。长度/志愿者。长度
}
console.log('one:',one(志愿者,社区))

log('two:',two(志愿者,邻居))
您的第一个代码是如何通过的。数组除以数字是NaN。试试这个

function calculate(volunteers, neighborhoods) {
    return volunteers.length / neighborhoods.length
}

一个潜在的问题是
const function(志愿者,邻居){
将抛出
SyntaxError
,因此如果测试需要有效的代码
const function(){},它将无法通过测试
无效语法。
函数
是一个保留关键字。
const
正在为名称赋值,因此您可以提供一个名称,如
const divide=function(){}
。或者,您不能使用
const
和使用命名函数,如
divide(){}
为什么第一个函数用志愿者划分邻里的数量,而另一个函数则相反?你的第一个函数应该不起作用。你甚至不能获取邻里数组的长度。即使你纠正了第一个函数中的
常量问题,它也会始终返回
NaN
,因为你是将数组除以一个数