我有以下代码片段:

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,并将其返回。

简而言之,将-1indexOf方法的结果进行比较,因为这些方法在找不到任何内容时会返回-1



是比较运算符!=导致值是truefalse。它比较这些值,结果取决于它们是否相等。无需if语句即可将结果转换为truefalse,这已经是比较表达式的值。

有时您会看到类似以下的代码:

if (AllowableCharacters.indexOf(String.fromCharCode(k)) != -1) {
  return true;
} else {
  return false;
}


在这种情况下,if语句是多余的。 if语句中的表达式已经是truefalse,因此可以直接返回:

return AllowableCharacters.indexOf(String.fromCharCode(k)) != -1;

关于javascript - String.fromCharCode(k)中-1的目的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28143297/

10-13 03:23