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