String.fromCharCode(k) 中 -1 的用途

Purpose of -1 in String.fromCharCode(k)

我有以下代码片段:

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

现在,我不太明白 -1 在此脚本中的用法。

脚本读取方式如下:

first String.fromCharCode(k) != -1 被执行(k 是一个关键代码,我是从其他脚本动态获取的)。

然后我从 AllowableCharacters 得到 indexof(String.fromCharCode(k) != -1)。

这是一个像这样的字符串:

AllowableCharacters = "abc" ; 

我也明白如果indexof在上面的字符串中找不到值它return -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 .

现在, 现在这不是我们想要的,我们想要的是 "tell me if the value is there"(return true) 或 "tell me if the value is not there"(return假)。

所以我们要做的是将上面的脚本更改为:

 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; } 

我没有在 . return (store.indexOf(String.fromCharCode(83)) !-1);

谢谢,

亚历山大

这是一个验证字符是否被允许的条件。它将return一个boolean(比较的结果)。

让我们分解一下。

  1. 首先,我们使用 String.fromCharCode 从字符代码中获取字符串。大概我们已经从某种输入事件中收到了这个。
  2. 接下来,我们使用 indexOf.
  3. AllowableCharacters 中获取此结果单字符字符串的索引
  4. 最后,我们测试该结果是否为 -1。测试的计算结果为 boolean 值,它可以像任何其他值一样从函数中得到 returned。值为-1表示不允许使用该字符,所以我们使用!=来判断该字符是否有效。

你搞错了执行顺序。

首先计算这个表达式:String.fromCharCode(k).

让我们假设结果是字符串 "b"。即在表达式中使用:AllowableCharacters.indexOf("b").

假设在字符串的第二个字符处找到字符,索引为 1,因此结果为 1。在表达式 1 != -1.

中使用

由于1不等于-1,返回结果true

简而言之,将 -1indexOf 方法的结果进行比较,就像 returns -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;