Javascript 为什么空参数没有被标识为未定义?
对于编码挑战,我有一个(几乎)可行的解决方案:Javascript 为什么空参数没有被标识为未定义?,javascript,arguments,parameter-passing,Javascript,Arguments,Parameter Passing,对于编码挑战,我有一个(几乎)可行的解决方案: 函数addLetters(…字母){ 设和=0; 常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(''; 如果(字母类型==='未定义'| |字母===[]| |字母===未定义){ 返回'z'; } for(设i=0;i
函数addLetters(…字母){
设和=0;
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分('';
如果(字母类型==='未定义'| |字母===[]| |字母===未定义){
返回'z';
}
for(设i=0;ifalse,因为这是两个不同的引用,它们的计算结果永远不会为true,所以需要检查数组的长度以检查它是否为空
此外,您还可以安全地从if语句中删除另外两个条件,因为字母
始终是一个数组
函数addLetters(…字母){
设和=0;
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分('';
如果(字母长度===0){
返回'z';
}
for(设i=0;ifalse,因为这是两个不同的引用,它们的计算结果永远不会为true,所以需要检查数组的长度以检查它是否为空
此外,您还可以安全地从if语句中删除另外两个条件,因为字母
始终是一个数组
函数addLetters(…字母){
设和=0;
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分('';
如果(字母长度===0){
返回'z';
}
for(设i=0;i
函数addLetters(…字母){
设和=0;
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分('';
如果(!字母长度){
返回'z';
}
for(设i=0;i
函数addLetters(…字母){
设和=0;
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分('';
如果(!字母长度){
返回'z';
}
for(设i=0;i 如果(求和)字母
参数永远不会是==[]
-它们是两个不同的数组。换句话说,[]=[]
总是false
。有趣的是,那么关键是要检查数组。长度===0
,正如code Maniac所指出的。没有必要同时测试字母类型==='undefined'
和字母===undefined
,它们的意思是一样的。而且我认为扩展参数永远都不可能是未定义的,所以有也不需要测试。字母
参数永远不会是==[]
-它们是两个不同的数组。换句话说,[]=[]
总是false
。有趣的是,那么关键是要检查数组。长度===0
,正如code Maniac所指出的。没有必要同时测试字母类型==='undefined'
和字母===undefined
,它们的意思是一样的。而且我认为扩展参数永远都不可能是未定义的,所以有也不需要测试。
letters === []
function addLetters(...letters) {
let sum = 0;
const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
if (!letters.length) {
return 'z';
}
for (let i = 0; i < letters.length; i++) {
sum += (alphabet.indexOf(letters[i]) + 1);
}
if (sum <= 26) {
return alphabet[sum - 1];
} else {
while (sum > 26) {
sum = (sum - 26);
if (sum <= 26) {
return alphabet[sum - 1];
}
}
}
}