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 不能优化代码本身。
您没有将值保存回 newString
(concat
不会改变字符串值 ),将其替换为
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'
}));
无法使 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 不能优化代码本身。
您没有将值保存回 newString
(concat
不会改变字符串值 ),将其替换为
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'
}));