javascript - 函数的参数未定义,但我称其为传递所有必要的参数

标签 javascript

所以我有这段代码,我想做的是解析两个单词之间的内容,例如: “开始中间结束”应该返回中间。 如果句子是“Start middle end.Start middle2 end”,它应该返回一个包含“middle”和“middle2”的数组。

问题是:

当我调用名为 FindAll 的函数时,我得到了 undefined object 。我用来测试它的警报还说任何参数都等于 undefined object

你可以在你的 Firebug 上运行它,你就会看到。

function findWithin(text, start, end, include) {
    "use strict";
    var stringExists = (text.indexOf(end) === -1),
        startPosition = text.indexOf(start),
        endPosition = text.indexOf(end),
        tMatch = [2];
    tMatch[0] = text.slice(endPosition + end.length, text.length);
    if (!stringExists) {
        if (include) {
            tMatch[1] = text.slice(startPosition, endPosition + end.length);
        } else {
            tMatch[1] = text.slice(startPosition + start.length, endPosition);
        }
    } else {
        tMatch[2] = false;
    }
    return tMatch;
}

function findAll(text, start, end, include) {
    "use strict";
    alert(toString(end));
    var findWithinVar = findWithin(text, start, end, include),
        occurrences = [],
        i = 0;
   // alert(toString(findWithinVar[2]));
    for (i; findWithinVar[2]; i++) {
        occurrences[i] = findWithinVar[1];
        findWithinVar = findWithin(text, start, end, include);
    }
    return occurrences;
}

var text = "Start middle end. Start middle end. Start middle end.",
    start = "Start",
    end = "end",
    result = findAll(text, start, end, false);

最佳答案

问题出在您的 toString 方法上。这不是你想的那样。只需将 end 传递给 alert() 即可。

alert(end);
<小时/>

您使用的toString()window.toString。我不知道这是否是标准方法,但它基本上是 Object.prototype.toString 的快捷方式。

当调用Object.prototype.toStirng时,它期望其this值是某个对象,它将为其返回其内部[[Class]] 属性。由于您没有设置 this 值,因此它返回 [object Undefined] (因为您处于严格模式)。

<小时/>

如果您这样做了:

toString.call(end)

它会返回[object String],这是正确的,但不是您想要的。

关于javascript - 函数的参数未定义,但我称其为传递所有必要的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785008/

相关文章:

javascript - 使用 css/html/javascript 将微笑转化为悲伤

javascript - 如何为我的 HTML 视频添加缓冲

javascript - 如何在 JavaScript 中添加和删除事件监听器

javascript - JS - 如何循环遍历其他对象数组中的数组

javascript - D3 - v5 多个文本元素的更新模式

javascript - 捕获选定内容的书签,包括 html 标签

javascript - Meteor:无法使用 CollectionFS 将图像上传到 S3

javascript - 来自设备的不正确的 JSON 格式

javascript - 在 click-javascript 上设置超链接样式

javascript客户端文件生成