首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么这在JavaScript中返回-1

在JavaScript中,当我们使用indexOf()方法在一个数组或字符串中查找某个元素或子字符串时,如果找不到该元素或子字符串,则返回-1。这是一个约定俗成的规则,表示该元素或子字符串不存在于数组或字符串中。

例如,在数组中查找某个元素:

代码语言:javascript
复制
const arr = [1, 2, 3, 4, 5];
const index = arr.indexOf(6); // 返回 -1,因为6不在数组中

在字符串中查找某个子字符串:

代码语言:javascript
复制
const str = "Hello, world!";
const index = str.indexOf("John"); // 返回 -1,因为"John"不在字符串中

这是一个非常有用的特性,因为我们可以通过检查indexOf()方法返回的值是否为-1来判断某个元素或子字符串是否存在于数组或字符串中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 2020-1-9-为什么JavaScript需要hoisting

    不知道同学们在学习JavaScript时,有没有对JavaScript的“提升”(hoisting)这个概念感到困惑。...---- 什么是“提升”(hoisting) 我们提到hoisting的时候专指JavaScript的一种场景: 对JavaScript的编译期间,文件的函数,var定义的变量等的声明会被提升至命名空间...这也就意味着,在JavaScript,即使你的变量先初始化,再声明,也不会出现bug x="黄腾霄好瘦"; var x; console.log(x); ?...为什么需要提升(Why hoisting) 这个问题应该分成两部分,为什么需要函数提升和为什么需要变量提升 函数提升 首先根据BrendanEich(JavaScript创建者)在Twitter上的留言...所以现在ES6也不推荐使用var 那么为什么当初要设计这个var 的变量提升呢?

    69920

    1.javascript的函数

    函数是指能完成特定功能的代码段; 2、函数的声明 函数是由这样的方式进行声明的:关键字 function、函数名、一组参数(根据需要使用参数),以及置于括号的待执行代码(功能),返回值(可选)。...如果您想调用上例的那个函数,可以使用如下的代码: (1)sayHello("joshua"); (2)var sayHi = sayHello; sayHi('joshua'); 函数名不加...例如,在下面的代码,alert 窗口就不会显示出来: function sum(iNum1, iNum2) { return iNum1 + iNum2; alert(iNum1 + iNum2...); } 一个函数可以有多个 return 语句,如下所示: function diff(iNum1, iNum2) { if (iNum1 > iNum2) { return iNum1...- iNum2; } else { return iNum2 - iNum1; } } 上面的函数用于返回两个数的差。

    49910

    SQL为什么不要使用1=1

    那么 1=1 存在什么样的问题呢?为什么又会使用呢?为什么会使用 1=1?在动态构建SQL查询时,查询条件往往都是动态的,最终执行时可能会使用不同的条件。...在许多情况下,即使查询包含了1=1,数据库的性能也不会受到太大影响,优化器会在实际执行查询时将其忽略。但是优化器并不是万能的。...在某些复杂的查询场景,即使是简单的 1=1 也可能对优化器的决策造成不必要的影响,比如导致全表扫描。...代码质量另外从代码质量的角度,我们也需要避免在查询包含 1=1,有以下几点考虑:代码清晰性:即使数据库可以优化掉这样的条件,但对于阅读SQL代码的人来说,1=1可能会造成困惑。...代码的可读性和清晰性非常重要,特别是在团队协作的环境。习惯养成:即使在当前的数据库系统1=1不会带来性能问题,习惯了写不必要的代码可能会在其他情况下引入实际的性能问题。

    21610

    在Java为什么不同的返回类型不算方法重载?

    doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...从方法签名的组成规则我们可以看出,方法的返回类型不是方法签名的组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回值类型不同的方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名的一部分呢?...匹配原则1:精准类型匹配 方法重载会优先调用和方法参数类型一模一样的方法,这是第一优先匹配原则:精准类型匹配。...总结 在同一个类定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 的 valueOf 方法,它有 9 种实现。

    3.4K10

    为什么说:JavaScript 模块的默认导出很糟糕

    我们知道,JavaScript 模块有两种方法来定义导出:默认导出和命名导出。在本节,我们来看下为什么默认导出是一种糟糕的做法,会导致不好的开发体验。...为什么 subtract 是默认的,而 add 是一个命名的导出? ps:我举的例子,可能有点刻意,但随着模块的复杂,类似这种情况有常有的 考虑到开发人员使用一个他们不熟悉且复杂的模块。...那么,这个下面的列表没有展示什么呢?没错,就是默认导出。...记住,默认导出不是命名的导出,所以 IDE 不知道改默认导出是干嘛的,也就不会在提示的列表显示出来: 图片 默认导出的开发体验类似于 Node 的 CommonJS,它的开发体验也不太友好。.../com1' xport { default as Com2 } from '.

    86620

    为什么 JavaScript 0.1+0.2 不等于 0.3 ?

    jACCJmSYBQAwXyIg 作者:刘洋 在 js 中进行数学的运算时,会出现0.1+0.2=0.300000000000000004的结果,一开始认为是浮点数的二进制存储导致的精度问题,但这似乎不能很好的解释为什么在同样的存储方式下...一、浮点数的二进制存储 JavaScript遵循IEEE754标准,在64位存储一个数据的有效数字形式。...因此,JavaScript提供的有效数字最长为53个二进制位(尾数部分52位+被省略的1位)。...当粘滞位为0时,若近似位为1,无论舍入精度损失都相同,故需取舍入两种结果的偶数:保留位为1时入,保留位为0时舍(即第二部分对阶运算规格化时的舍入操作)。...四、总结思考 由于IEEE754标准,这样的“bug”不止在JavaScript中会出现,在所有采用该标准的语言中都会存在,实际编程可以通过设置精度保留位数等方式解决。

    1.8K10
    领券