【发布时间】:2017-02-07 22:12:12
【问题描述】:
嘿,所以我有一个函数,它从输入框中获取一个字符串并将其拆分为数字和字母,如下所示:
function sepNsLs() {
"use strict";
var letterArray = [];
var numberArray = [];
separatorSpacerator();
var L = 0;
var listResult = document.getElementById("listInput").value;
var splitResult = listResult.split(separator.sep);
for (; L < splitResult.length; L++) {
if (isNaN(splitResult[L])) {
letterArray.push(splitResult[L]);
} else if (Number(splitResult[L])) {
numberArray.push(splitResult[L]);
}
}
}
我的程序必须完美地通过 JSLint,这意味着我需要在严格模式下使用我的函数。我现在只将它们置于严格模式,这意味着我以后尝试调用我在 SepNsLs 函数中声明和填充的 letterArray 和 numberArray 的函数不再调用这些数组,并且这些数组未声明。这是其中之一的代码:
function addNumbers() {
"use strict";
var sum = 0;
var i = 0;
sepNsLs();
while (i < numberArray.length) {
sum = sum + Number(numberArray[i]);
i++;
}
如您所见,我在 addNumbers 函数中调用了 sepNsLs 函数,但由于严格模式,我无法使用 sepNsLs 创建的数组。我该如何解决?另外,有没有像 javascript beautifier 这样的网站可以修复我当前的代码以适应严格的模式约定?
编辑:分隔符在这里被声明为全局变量:
var separator = {
sep: 0
};
separatorSpacerator 使得如果我选择在空格处分割我的输入字符串,告诉我的程序在空格处分割的输入框声明了单词“Space”,所以我可以看到它是我正在分割的空格我的字符串在。
function separatorSpacerator() {
"use strict";
var list = document.getElementById("listInput").value;
if (document.getElementById("separatorInput").value === "space") {
separator.sep = " ";
} else if (document.getElementById("separatorInput").value === " ") {
separator.sep = " ";
document.getElementById("separatorInput").value = "space";
} else {
separator.sep = document.getElementById("separatorInput").value;
}
if (list.indexOf(separator.sep) === -1) {
alert("Separator not found in list!");
clearResults();
}
}
【问题讨论】:
-
这个
separatorSpacerator函数有什么作用?separator.sep是在哪里定义的?? -
一秒钟我会编辑我的帖子
-
现在编辑了
标签: javascript arrays syntax strict