Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么空参数没有被标识为未定义?_Javascript_Arguments_Parameter Passing - Fatal编程技术网

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];
      }
    }
  }
}