我有以下代码片段:
return (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1);
现在,我在脚本中不太了解-1的用法。
脚本的读取方式如下:
first String.fromCharCode(k) != -1
被执行(k是关键代码,我正在从其他脚本中动态获取)。然后我从AllowableCharacters获得indexof(String.fromCharCode(k)!= -1)。
这是一个像这样的字符串:
AllowableCharacters = "abc" ;
我也明白,如果indexof在上面的字符串中找不到值,则返回-1。
回到我的问题,但是为什么脚本中为-1?
编辑::
为了使我的问题更简单,您将如何阅读以下内容:
String.fromCharCode(k))!=-1
用简单的英语讲。
编辑2 ::
好的,所以我只阅读了guffa的答案,并做了一个随机脚本来检查,这里是脚本:
var store = "abcdefgpS";
function check_index(){
console.log(store.indexOf(String.fromCharCode(83)));
};
在上面的函数中,!-1被排除在外,因此在console.log上,如果找到匹配项,则获得找到字符的indexOf;如果找不到匹配项,则得到-1。
现在,这不是我们想要的,我们想要的是“告诉我值是否存在”(返回true)或“告诉我值是否存在”(返回false)。
所以我们要做的是将上面的脚本更改为:
var store = "abcdefgpS";
function check_index(){
console.log(store.indexOf(String.fromCharCode(83)) !-1);
};
给真或假值。
现在如何:
返回(store.indexOf(String.fromCharCode(83))!-1)
读为:
if (store.indexOf(String.fromCharCode(83)) !-1){
return true;
}else { return false; }
我在中看不到if语句。
return (store.indexOf(String.fromCharCode(83)) !-1);
谢谢,
亚力山大
最佳答案
您的执行顺序错误。
首先,计算此表达式:String.fromCharCode(k)
。
假设结果为字符串"b"
。在表达式:AllowableCharacters.indexOf("b")
中使用。
让我们假设字符位于具有索引1的字符串的第二个字符处,因此结果为1
。在表达式1 != -1
中使用。
由于1
不等于-1
,结果为true
,并将其返回。
简而言之,将-1
与indexOf
方法的结果进行比较,因为这些方法在找不到任何内容时会返回-1
。
是比较运算符!=
导致值是true
或false
。它比较这些值,结果取决于它们是否相等。无需if
语句即可将结果转换为true
或false
,这已经是比较表达式的值。
有时您会看到类似以下的代码:
if (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1) {
return true;
} else {
return false;
}
在这种情况下,
if
语句是多余的。 if
语句中的表达式已经是true
或false
,因此可以直接返回:return AllowableCharacters.indexOf(String.fromCharCode(k)) != -1;
关于javascript - String.fromCharCode(k)中-1的目的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28143297/