时间:2021-05-26
看代码,不说话:
复制代码 代码如下:
var i=arr.length;
while(i--)
{
//写点啥?
}
上面是Google array.js 程序中建议改进的代码。思考为什么i-- 到了 i为0时while循环结束了?
下面的代码与它等价:
复制代码 代码如下:
var i=arr.length;
for(;i--;)
{
//i--写在两个分号的中间,奇怪吗?不奇怪吗?
}
震撼?没感觉?
呃。平时我们写在两个分号中间的是什么?这个i--按“常理”应该是在第二个分号之后啊。那我们看看C语言的代码:
复制代码 代码如下:
int main()
{
int i = 5;
while(i--)
{
printf("%d ", i);
}
while(1);
return 0;
}
运行的结果也是与JavaScript惊人的一致!
好吧。我不知道这是为什么?只知道数值0转换成布尔值为false:
var i= !!0;
而别的数值转换成布尔值为true。上面的示例程序代码是将数值到布尔值的显式转换。
0隐式转换为false的情况用下面的JS程序测一下:
复制代码 代码如下:
var i=0;
if(i)
{
alert('if');
}
else{
alert('else');
}
alert('不管怎么if和怎么else程序都要走这儿');
if这个示例代码写得一点都不“实战”?那好吧,下面是一位土豆网前端开发高手的代码示例片段:
复制代码 代码如下:
var obj = {status:0, msg:'xxxx'};
var data = obj.status || 'xxxx';
这个总够“隐蔽”的了!
再强调一次:数值0的隐式转换成布尔值为false的条件是在if()中、while()中、for(;;)两个分号的中间等布尔判定的条件表达式。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
尽管数组在Javascript中是对象,但是不建议使用forin循环来遍历数组,实际上,有很多理由来阻止我们对数组使用forin循环。因为forin循环将会枚举
注意:JavaScript中数组不是关联数组。JavaScript中只有对象来管理键值的对应关系。但是关联数组是保持顺序的,而对象不是。由于forin循环会枚举
在使用JavaScript编写代码过程中,可以使用多个方法对数组进行遍历;包括for循环、forEach循环、map循环、forIn循环和forOf循环等方法。
JavaScript数组对象,有一个forEach方法,可枚举每一个数组元素,但并不支持类似for循环的break语法,中断循环:[1,2,3].forEach
这篇文章来回答javascript通用循环遍历方法forEach中最后提到的关于伪数组的问题。什么是伪数组能通过Array.prototype.slice转换为