【问题标题】:Javascript code displays undefined when program is run程序运行时 Javascript 代码显示未定义
【发布时间】:2016-06-08 11:30:55
【问题描述】:

我的程序必须使用字符串原型属性,即使它是不必要的。每当单击提交按钮时,都会导致一堆未定义的。 在 show_alphabet 函数中,我有一个名为“str”的变量,它是一个由大写字母组成的字符串。

在 show_alphabet 函数中,我有代码使用 String 对象的原型属性添加一个名为“sendArray”的方法,并为这个 (sendArray) 分配一个返回 split() 方法的函数。 split() 方法将拆分字母字符串。

我试图将“str”中的字母显示为一个数组,其中冒号后跟每个字母,并将每个字母放在单独的行上。 例如: A: 乙: C: …

虽然我意识到不必使用字符串原型属性,但我的作业指南说必须使用它们。这是我的代码的相关部分。

<form>
<button type = "button" onclick = show_alphabet()>submit</button>
</form>
<script type "text/javascript">
function show_alphabet() {
var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
String.prototype.sendArray = function() {
    return this.split("");
}
var arr = str.sendArray 
for (i = 0; i<str.length- 1; i++) {
    str.split(":<br />");
    document.write(arr[i]);
    }
}

【问题讨论】:

    标签: javascript arrays string prototype


    【解决方案1】:

    这个:var arr = str.sendArray

    应该是:var arr = str.sendArray()

    否则,您将函数分配给arr,而不是函数结果。

    例子:

    var str = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    String.prototype.sendArray = function() {
        return this.split("");
    }
    var arr = str.sendArray(); 
    var arrLength = arr.length; // length of the array should be calculated before the loop, or it will be calculated on every interaction.
    for (i = 0; i<arrLength; i++) {
        arr[i]+=":<br />"
        console.log(arr[i]);
    }

    【讨论】:

    • 是的,但是现在只显示str变量,for循环没有运行
    • 运行我添加的代码,指出不符合你要求的地方。
    • 我更新了一些东西,比如数组的长度应该在循环之前计算,或者每次交互都会计算。
    • @AB 另外,如果此解决方案对您有用,请考虑选择它作为正确答案。
    【解决方案2】:

    更改代码的一部分

    var arr = str.sendArray 
    

    var arr = str.sendArray();
    

    这样您实际上是在分配函数调用的返回值,而不是函数本身。

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多