Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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中尝试反转字符串时,在反转字符串的开头获得NaN_Javascript_String_Reverse - Fatal编程技术网

在javascript中尝试反转字符串时,在反转字符串的开头获得NaN

在javascript中尝试反转字符串时,在反转字符串的开头获得NaN,javascript,string,reverse,Javascript,String,Reverse,您能用上面的代码指导我吗?将字符串拆分为一个部分数组会更容易,然后javascript有一个reverse()方法来反转数组的顺序,然后您可以再次将其连接在一起: var input="string to be reversed"; function reverse(reversestring) { var result; for(var i=reversestring.length-1;i>=0;i--) { result+=reversestrin

您能用上面的代码指导我吗?

将字符串拆分为一个部分数组会更容易,然后javascript有一个reverse()方法来反转数组的顺序,然后您可以再次将其连接在一起:

var input="string to be reversed";
function reverse(reversestring)
{
   var result;
   for(var i=reversestring.length-1;i>=0;i--)   
     {
     result+=reversestring[i];
     }
     return result;
}
console.log(reverse(input));

使用空值初始化
var结果

因为如果不首先使用值初始化它,那么变量将返回一个未定义的

优化您的循环(如果需要)

以下技术(或类似技术)通常用于在JavaScript中反转字符串:

for(var i=reversestring.length-1;i--;)   
事实上,到目前为止发布的所有答案都是这种模式的变体。然而,这种解决方案存在一些问题。例如:

// Don’t use this!
var naiveReverse = function(string) {
    return string.split('').reverse().join('');
}

naiveReverse('foo+1,因为这是我在实践中要做的,但是-1,因为它没有直接回答OP的问题:“用上面的代码指导我”。这种优化完全没有必要,它依赖于在减量之前对
i--
进行的检查,更不用说依赖于0是错误的,它不能移植到其他语言。这在技术上是定义良好的,但对新手程序员不友好。@tjameson只是一个问题,你提到的是哪种语言。这样我就可以检查它(不是为了证明你错了,只是为了知道).@minitech readability对我来说毫无意义,因为可读性是从性能成本中获得的。我认为,让客户感到舒适而让开发人员感到舒适并没有任何好处。此外,关于性能,我们这里讨论的是微秒,如果不是纳秒的话。这种特殊的优化只有在循环在另一个循环中运行时才有用数百万次。可维护性比微秒级的性能更重要。@Ankit:如果这真的提高了性能,那将是一个有趣且可以论证的有效立场。
for(var i=reversestring.length-1;i--;)   
// Don’t use this!
var naiveReverse = function(string) {
    return string.split('').reverse().join('');
}