String Concat 在 JS 范围内不起作用

String Concat not working in scope JS

无法使 String Concat 工作

在下面的代码中,我无法将变量 temp 连接到变量 newString。我已经测试并发现这不是范围界定问题,但我仍然对这种行为感到困惑。

理解objective代码

您可以在下面看到一个代码示例,该示例采用带有 K(数字)和 S(字符串)的对象。该函数旨在将字符在字母表中的位置移动数字 K,同时保持给定字符串 S 的大写或小写。

function shiftCharByInt(args){
  const numb = args.K
  const word = args.S
  let newString = ''

  for(let i=0;i<word.length;i++){
      let character = word.charAt(i)
      if(/^[a-z]+$/.test(character)){
          let indexOfChar = character.charCodeAt(0)
          indexOfChar+=numb
          while(indexOfChar > 122) indexOfChar -= 26;
          let temp = String.fromCharCode(indexOfChar)
          newString.concat(temp)
          continue;
      }
      if(/^[A-Z]+$/.test(character)){
          let indexOfChar = character.charCodeAt(0)
          indexOfChar+=numb
          while(indexOfChar > 90) indexOfChar -= 26;
          let temp = String.fromCharCode(indexOfChar)
          newString.concat(temp)
          continue;
      }
      newString += word
  }
  return newString
}

示例输入:

{
  K: 11,
  S: 'Hello - World'
}

示例输出:

"Spwwz - Hzcwo"

同样,我更感兴趣的是理解为什么 concat 不能优化代码本身。

您没有将值保存回 newStringconcat 不会改变字符串值 ),将其替换为

newString = newString.concat(temp);

newString = newString + word;//outside if

另外你不能重新赋值给const,所以替换

const newString = ''

var newString = ''

演示

function test(args){
  const numb = args.K
  const word = args.S
  var newString = ''

  for(let i=0;i<word.length;i++){
    debugger
      let character = word.charAt(i)
      if(/^[a-z]+$/.test(character)){
          let indexOfChar = character.charCodeAt(0)
          indexOfChar+=numb
          while(indexOfChar > 122) indexOfChar -= 26;
          let temp = String.fromCharCode(indexOfChar)
          newString = newString.concat(temp)
          continue;
      }
      if(/^[A-Z]+$/.test(character)){
          let indexOfChar = character.charCodeAt(0)
          indexOfChar+=numb
          while(indexOfChar > 90) indexOfChar -= 26;
          let temp = String.fromCharCode(indexOfChar)
          newString = newString.concat(temp)
          continue;
      }
      newString = newString + character; 
  }
  return newString
}

console.log(test({
  K: 11,
  S: 'Hello - World'
}));