字符串不是函数
String is not a function
我不断在第五行收到"字符串不是函数"错误。
function SwapCase(str) {
var words = []
var q = str
for (var i = 0; i<q.length; i++) {
if (q(i) === q(i).toLowerCase) {
var upper = q(i).toUpperCase
words.push(upper)
};
else {
var lower = q(i).toLowerCase
words.push(lower)
};
};
words.join
return words;
};
SwapCase("HeleEer")
我仍然是编码的菜鸟,很抱歉缺少分号和其他空格和缩进错误。
q(i)
这是一个函数调用,但q
是一个字符串,而不是一个函数。
您可以使用数组索引从字符串中获取单个字符:q[i]
。
另外,您可能希望调用 toLowerCase
和 toUpperCase
函数。
此外,words.join
没有效果,原因有两个。
q(i)
使用参数 i
调用函数q
。
q[i]
得到字符串 q
的第 i
个字符。
这段代码中还有其他错误,但q(i)
是您报告错误的原因(即,不调用函数toLowerCase
、toUpperCase
、join
(。
虽然 JavaScript 不会让你写分号,但这样做是个好主意,因为当你不期望它时,你可能会被一些奇怪的错误咬伤。
编辑:哦 - 说到分号,你不能在else
之前写分号。事实上,你根本不应该在右大括号之后写它们。你把它们写在语句之后,而不是在块之后,与原始帖子中的内容几乎相反。
首先,您需要使用 string.toLowerCase()
和 string.toUpperCase()
。请注意括号。
其次,无论您应用这些方法是什么对象,都必须是一个字符串 - 例如q
(或者q[i]
,如果这是你需要的,正如SLaks建议的那样(。 q(i)
调用i
上的函数q()
(不存在(。
你可以在一行中完成
function SwapCase(str) {
for (x = ""; x.length < str.length; x += String.fromCharCode((str.charCodeAt(x.length) - 65 + 32) % 64 + 65));
return x;
}
我使用 ascii 代码和一点数学来转换它而不使用 if 语句
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- JavaScript按钮/输入/函数,字符串反转
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 从带参数的字符串变量调用函数中的函数
- 是否可以像字符串一样/操作/函数
- 从字符串调用javascript函数
- jquery字符串变量上的每个函数
- 如何在只接受字符串值/文字的HTML属性中调用函数
- 将JSON字符串转换为函数参数
- 在Javascript中将字符串转换为函数
- 正在创建使用子字符串解析JSON数据的函数
- 是否可以在 ng-click 中调用函数字符串
- 用于查找函数字符串 javascript 的正则表达式
- Regex js解析函数字符串
- 是传递给函数(字符串或对象)的元素
- 如何在不使用eval()的情况下将完整的函数字符串转换为javascript函数
- javascript函数字符串slice
- 引用函数(字符串)javascript中的数组项
- JS regex从一个函数字符串中提取多行参数