javascript - in运算符基础问题
PHP中文网
PHP中文网 2017-04-10 14:27:46
[JavaScript讨论组]
var data = [7,8,9]
"0" in data  //=>ture:数组包含元素"0"
1 in data //=>true:数组转换为字符串
3 in data //=> false:没有索引为3的元素

不理解为什么下面这两段代码为true
"0" in data //=>ture:数组包含元素"0"
1 in data //=>true:数组转换为字符串

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
迷茫

谢邀。
对于 Javascript 中的 in 操作符,根据 MDN 的定义是:

The in operator returns true if the specified property is in the specified object.

即如果属性存在于操作对象上时返回 true,否则为 false

一般的对象

var obj = {name: 'stephenlee', age: 23};
'name' in obj //true
'hobby' in obj //false

属性名需要用字符串来指定:

name in obj //false

数组对象

使用数字索引值来表示数组对象的属性名称,当然数组对象固有的一些属性不包括在内,例如 length
以题主问题中的数组为例:

var data = [7,8,9];

相当于:

data[0] = 7;
data[1] = 8;
data[2] = 9;

所以很自然有如下结果:

0 in data //true
1 in data //true
2 in data //true
3 in data //false

当然数组对象自带的属性也可以返回 true

length in data //true

也可以将数组对象的索引值和固有属性转换为字符串来处理:

'0' in data
'length' in data
巴扎黑

in 操作符是区查询对象的property,详见>>

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号