在JavaScript中使用“ in”运算符

作者 : IT 大叔 本文共1593个字,预计阅读时间需要4分钟 发布时间: 2020-10-15

在这个简短的教程中,我们将介绍JavaScript中的“ in”运算符-它是什么,它做什么以及如何在自己的JavaScript代码中实现它。

准备?让我们开始吧!

无论如何,什么是“输入”运算符?

我很高兴你问。在JavaScript中,“ in”运算符是一个内置运算符,用于检查Object中是否存在属性

在表达式中使用时,“ in”运算符将返回布尔值;如果在对象中找到该属性,则为true,否则为false

由于数组在技术上是JavaScript中的对象,因此“ in”运算符也可以在Array上使用。这里的不同之处在于“在”操作员可以仅被用于找出是否一个特定的索引是在阵列中,由于值阵列不是属性阵列。

这听起来可能有些混乱,所以让我们来看看它的实际作用。

如何使用“输入”运算符?

语法非常简单。“ in”运算符具有两个参数:

  1. prop(代表属性名称或数组索引的字符串或符号。)
  2. 对象(您将在其中检查其是否包含道具的对象。)

在代码中,它看起来像这样:

prop in object

在某些情况下:

let obj = { prop1: 1, prop2: 2, prop3: 3 };

"prop1" in obj;
//=> true

"prop2" in obj;
//=> true

"prop5" in obj;
//=> false

如我们所见,前两个propsobj Object中的键(以及属性),并返回true布尔值,而“ prop5”不是键或属性,因此返回false

对象中的键算作属性,因为可以像这样直接在对象上调用它们:

let obj = { prop1: 1, prop2: 2, prop3: 3 };

obj.prop1;
//=> 1

obj["prop1"];
//=> 1

这就是为什么“ in”运算符不能用于检查数组中的元素/值,而可以用来检查Array Object的属性(如索引或length属性)的原因:

let arr = [1, 2, 3, 4, 5];

// These operators check for Array indices, not values:
0 in arr;
//=> true
2 in arr;
//=> true
5 in arr;
//=> false

// This operator checks for a property of the Array Object:
"length" in arr;
//=> true
//=> This returns true because arr.length is a property

如何在实际程序中使用它?

当您需要检查对象中是否存在属性或键时,“ in”运算符主要有助于编写易读的,对人类友好的代码。

假设存在一个现有函数的一部分,该函数检查for循环内的Object中是否存在键,如果存在,则执行一点逻辑,如果不存在,则执行另一逻辑。

这个例子没有太多的上下文,但是请允许我:

let agesOfUsers = {
  18: ["Adam", "Jess"],
  21: ["Mike", "Alex"],
  24: ["Tom"]
};

function getNamesForAge(age) {
  if (age in agesOfUsers) {
    agesOfUsers[age].forEach( user => console.log(user) );
  } else {
    console.log(`No users of age ${age} on record.`);
  }
}

getNamesForAge(18);
//=> Adam
//=> Jess

getNamesForAge(30);
//=> No users of age 30 on record.

为了记录,if语句也可以这样写:

if (!!agesOfUsers[18]) {
  // logic
}

但是,在使代码更人性化和可读性方面,尤其是在共享代码库中,具有很大的主观价值。因此,为什么使用“ in”运算符是一个很好的选择!


如果您走了这么远,非常感谢您的阅读!希望本文对您的JavaScript之旅有所帮助或有益。:)

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 在JavaScript中使用“ in”运算符

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论