今天同学问我一个题目,觉得挺有意思,一开始我答错了,后来根据现象,大概明白了 它的意思!
<script>
var a = [1,2,3]
delete a[2]
alert(2 in a)
</script>
alert出来的是:
A: true
B:false
-------------------------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------
答案是:B
那么,是为什么呢?
这个就得说道js中的关键词 in 了!
关键词in在js中是对于数组或者对象属性进行的循环/迭代操作。
格式:变量 in 对象
当对象是数组时:返回的是变量在数组中位置的索引;
当对象是对象时:返回的是对象的属性;
故上面2 in a 返回的是a[2]位置的索引,而a[2]已被delete,所以,返回的是false;
---------------------------------------------------------------------------------------------------for ... in ... ------------------------------------------------------------------------------------------------
下面来说说in的一些用法案例
案例一:变量 in 数组
<script>
var a = [1,2,3]
delete a[2]
for(var i in a){
alert(a[i])
}
</script>
alert出来的结果是:1 2
案例二:变量 in 对象
<script>
var a = {m:"哈哈",n:[1,2]}
for(var i in a){
alert(a[i])
}
</script>
alert出来的结果是:哈哈 1,2
案例三:变量 in 对象
<script>
var a = {m:"哈哈",n:[1,2]}
alert("n" in a)
</script>
alert出来的 true