javascript中的while(i--)循环
我通常使用while循环作为:javascript中的while(i--)循环,javascript,Javascript,我通常使用while循环作为: while (i<some_value) 但是当我尝试 while((num_arr.length)--) console.log(num_arr); [4, 8, 7, 1] [4, 8, 7] [4, 8] [4] [] // WHY IS THIS HAPPENING?? 要使用此语法,是否需要了解一些隐藏的内容?数组的length属性是可写的,当您设置它时,它将适当地切断它们的元素或添加空插槽 var items = [1, 2, 3, 4,
while (i<some_value)
但是当我尝试
while((num_arr.length)--) console.log(num_arr);
[4, 8, 7, 1]
[4, 8, 7]
[4, 8]
[4]
[] // WHY IS THIS HAPPENING??
要使用此语法,是否需要了解一些隐藏的内容?数组的
length
属性是可写的,当您设置它时,它将适当地切断它们的元素或添加空插槽
var items = [1, 2, 3, 4, 5];
items.length = 3; // items is now [1, 2, 3]
items.length = 6; // items is now a sparse array: [1, 2, 3, undefined × 3]
因此,请不要这样做。数组的
length
属性是可写的,当您设置它时,它将适当地切断它们的元素或添加空插槽
var items = [1, 2, 3, 4, 5];
items.length = 3; // items is now [1, 2, 3]
items.length = 6; // items is now a sparse array: [1, 2, 3, undefined × 3]
因此,不要这样做。当您将数组的
length
属性设置为较低的值时,末尾的项将被删除:
var-arr=[1,2,3,4,5];
arr.length;//5.
arr.length=3;
arr;//[1,2,3]
以下章节对此进行了描述:
当newLen在代码中使用(
--
)可减少数组的长度。将数组的长度
属性设置为较低的值时,末尾的项将被删除:
var-arr=[1,2,3,4,5];
arr.length;//5.
arr.length=3;
arr;//[1,2,3]
以下章节对此进行了描述:
当newLen
将oldLen设置为oldLen–1
让DeleteSuccessed作为调用传递的[[Delete]]内部方法(oldLen)和false的结果
作为论据
在代码中使用(-->
)可以减少数组的长度。当使用数组时。长度--
可能会将数组每次缩短一个元素
请参阅“缩短阵列”一节下的参考:
Array.prototype.length
可以通过编程方式重新编写,它可能会将数组缩短指定的新长度
例如
a = [1,2,3,4,5,6,7,8,9,10];
// Shorten the array by one element
a.length--; // a <-- [1,2,3,4,5,6,7,8,9]
// In case you want to shorten your array to 3 elements, you can:
a.length = 3; // a <-- [1,2,3]
a=[1,2,3,4,5,6,7,8,9,10];
//将数组缩短一个元素
a、 长度--;//a执行array.length--
时,可能会每次将数组缩短一个元素
请参阅“缩短阵列”一节下的参考:
Array.prototype.length
可以通过编程方式重新编写,它可能会将数组缩短指定的新长度
例如
a = [1,2,3,4,5,6,7,8,9,10];
// Shorten the array by one element
a.length--; // a <-- [1,2,3,4,5,6,7,8,9]
// In case you want to shorten your array to 3 elements, you can:
a.length = 3; // a <-- [1,2,3]
a=[1,2,3,4,5,6,7,8,9,10];
//将数组缩短一个元素
a、 长度--;//anum\u arr.length--
与num\u arr.length=num\u arr.length-1
相同。现在清楚了吗?从没想过数组长度是可写的!Thanks@Jack_of_All_Trades:虽然,如果不是,这仍然不起作用–技巧取决于length\u of_num\u arr
毕竟是递减的。@minitech:是的,你是对的……我的大脑工作不好。。。。感谢大家…num\u arr.length--
与num\u arr.length=num\u arr.length-1
相同。现在清楚了吗?从没想过数组长度是可写的!Thanks@Jack_of_All_Trades:虽然,如果不是,这仍然不起作用–技巧取决于length\u of_num\u arr
毕竟是递减的。@minitech:是的,你是对的……我的大脑工作不好。。。。谢谢你们所有人…哇!。。。。今天晚上10:28我知道一件事……Javascript你总是让我感到惊讶……这是只在Javascript中发生的事情之一吗?我不认为你可以在任何其他语言中以这种方式更改数组的长度……至少在python中我不记得了……@Jack_of_All_Trades:Jack_of_All_Trades:可能还有其他东西,但我不知道在任何其他通用语言中有可写的length
属性,不。VB.NET有ReDim
,python有del arr[-5:]
,等等。尽可能使用不寻常的稍微不寻常的调整大小方法。注意:将长度设置为更高的值不会附加未定义的s。这应该是:items.length=6;//items现在是一个稀疏数组:[1,2,3,,,,,,]代码>。附加元素不是未定义的,它们不存在(即,它们未定义,而不是存在且值未定义)。哇!。。。。今天晚上10:28我知道一件事……Javascript你总是让我感到惊讶……这是只在Javascript中发生的事情之一吗?我不认为你可以在任何其他语言中以这种方式更改数组的长度……至少在python中我不记得了……@Jack_of_All_Trades:Jack_of_All_Trades:可能还有其他东西,但我不知道在任何其他通用语言中有可写的length
属性,不。VB.NET有ReDim
,python有del arr[-5:]
,等等。尽可能使用不寻常的稍微不寻常的调整大小方法。注意:将长度设置为更高的值不会附加未定义的s。这应该是:items.length=6;//items现在是一个稀疏数组:[1,2,3,,,,,,]代码>。附加元素不是未定义的,它们不存在(即,它们未定义,而不是存在且值未定义)。