我有以下代码片段:
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)或“告诉我价值是否存在”(返回假)。
所以我们要做的就是将上面的脚本更改为:
var store = "abcdefgpS";
function check_index(){
console.log(store.indexOf(String.fromCharCode(83)) !-1);
};
,给出你的真或假值。
现在怎么做:
return(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);
谢谢,
亚历山大
答案 0 :(得分:2)
这是验证字符是否被允许的条件。它将返回boolean
(比较结果)。
让我们把它分解。
String.fromCharCode
的char代码中获取一个字符串。据推测,我们从某种输入事件中得到了这个。AllowableCharacters
在indexOf
中获取此结果单字符字符串的索引。-1
。测试评估为boolean
值,它可以像任何其他值一样从函数返回。值-1
表示不允许使用该字符,因此我们使用!=
来确定该字符是否有效。答案 1 :(得分:1)
你的执行顺序错了。
首先评估此表达式:String.fromCharCode(k)
。
让我们假设结果是字符串"b"
。表达式中使用了AllowableCharacters.indexOf("b")
。
让我们假设在字符串中的第二个字符处找到了characer,其中索引为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;