String.fromCharCode(k)中-1的目的

时间:2015-01-26 00:37:03

标签: javascript fromcharcode

我有以下代码片段:

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

谢谢,

亚历山大

2 个答案:

答案 0 :(得分:2)

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

让我们把它分解。

  1. 首先,我们从String.fromCharCode的char代码中获取一个字符串。据推测,我们从某种输入事件中得到了这个。
  2. 接下来,我们使用AllowableCharactersindexOf中获取此结果单字符字符串的索引。
  3. 最后,我们测试结果是否为-1。测试评估为boolean值,它可以像任何其他值一样从函数返回。值-1表示不允许使用该字符,因此我们使用!=来确定该字符是否有效。

答案 1 :(得分:1)

你的执行顺序错了。

首先评估此表达式:String.fromCharCode(k)

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

让我们假设在字符串中的第二个字符处找到了characer,其中索引为1,因此结果为1。这在表达式1 != -1中使用。

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

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


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

有时您会看到如下代码:

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

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

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