函数'的参数是未定义的,但我调用它传递所有必要的参数
Function's parameters is Undefined but I called it passing all necessary arguments
我有这段代码,我要做的是解析两个单词之间的内容,比如:"开始中间结束"应该返回中间。如果句子是"开始中间结束。Start middle2 end"应该返回一个包含"middle"answers"middle2"的数组。
问题是:
当我调用FindAll函数时,我得到一个未定义对象。我用来测试的Alert也说任何参数都等于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]
,这是正确的,但不是您想要的。
相关文章:
- 使用html表单中的参数调用JavaScript函数
- 如何在ES6类中使用参数调用函数
- 如何使用OnClick事件通过参数调用来调用PHP函数
- Worklight Client使用自定义BODY参数调用过程
- 如何在jQuery AJAX中使用参数调用PHP函数
- 如何使用参数调用java脚本函数,其中参数来自字符串变量
- 使用数组-apply()中的参数调用函数,但不使用上下文参数
- 如何使用JQuery.ech()中分配给变量的参数调用函数
- 如何用参数调用coffescript函数
- 使用与父函数相同的参数调用函数
- 使用动态参数调用函数
- 使用来自 asp.net 的参数调用 Java 脚本函数
- 设置 JavaScript 以使用不同的参数调用函数
- 在 javascript 函数中使用参数调用 java 函数
- 使用参数调用 JavaScript 处理程序
- 如何使用在 jscript 中声明的参数调用 Html.RenderAction()
- Firebase 承诺 - Query.once 失败:使用 1 个参数调用.预计至少 2
- 有没有办法通过另一个函数参数调用函数
- 在 PHP 中使用多个参数调用 js 函数
- 使用来自另一个函数的对象参数调用函数