javascript - 简单的 js FOR 循环返回 'undefined'

标签 javascript variables for-loop

不确定我在这里做错了什么;变量 newStr 应该只返回“Hello World”,但我得到的是:

"undefinedHello World"
undefined

JS

function translate2(x){
  var newStr;
  x = "Hello World";
  for(i=0; i<x.length; i++) {
    newStr+=x.charAt(i);
  }
  console.log(newStr);
}

最佳答案

  1. 在 JavaScript 中,如果一个变量没有显式初始化,它默认为 undefined。 .那不是字符串,而是语言的原始类型。您可以通过打印来检查

    var newStr;
    console.log(newStr);
    // undefined
    console.log(newStr + "thefourtheye");
    // undefinedthefourtheye
    

    所以,只需用一个空字符串初始化变量,就像这样

    var newStr = '';
    
  2. 另外,请注意,在这一行

    for(i=0; i < x.length; i++) {
    

    i 以前从未声明过。因此,将创建一个新的全局变量 i。你可能不想要那样。因此,只需使用 var 关键字来声明作用域为当前函数的变量,如下所示

    for (var i = 0; i < x.length; i++) {
    
  3. 除此之外,translate2 是一个函数,当它被调用时,人们会期望它返回一些东西。但是您没有明确返回任何内容。因此,默认情况下,JavaScript 再次返回 undefined。这就是为什么您在问题中得到第二个 undefined 的原因。要解决这个问题,请像这样使用 return 语句

    function translate2(x) {
        var newStr = "";
        for (var i = 0; i < x.length; i++) {
            newStr += x.charAt(i);
        }
        return newStr;
    }
    

关于javascript - 简单的 js FOR 循环返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665160/

相关文章:

javascript - 如何根据键获取分配给变量的值?

javascript - window.location.href 到子文件夹

Django 模板 : Dynamic template variable inside another variable

javascript - 如何在 JavaScript 中混合变量和循环索引?

c - for 循环中 rand() 的逻辑困惑

javascript - 在 for 循环中使用 onclick 事件时如何解决范围问题

javascript - 如何计算数组中对象值的动态平均值?

javascript - 使用 JQuery toggleclass 来操作点击转换

variables - 用另一个变量的第一个词设置一个变量

javascript - jQuery:为三个函数设置 var(s)