JavaScript 数组循环引起的思考


Posted in Javascript onJanuary 01, 2010

看代码,不说话:

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(;;)两个分号的中间等布尔判定的条件表达式。

Javascript 相关文章推荐
javascript 对象定义方法 简单易学
Mar 22 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
JS命令模式例子之菜单程序
Oct 10 Javascript
简单实现AngularJS轮播图效果
Apr 10 Javascript
w3c编程挑战_初级脚本算法实战篇
Jun 23 Javascript
使用D3.js制作图表详解
Aug 13 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
详解vue挂载到dom上会发生什么
Jan 20 Javascript
JavaScript进阶(一)变量声明提升实例分析
May 09 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
Aug 27 Javascript
javascript eval和JSON之间的联系
Dec 31 #Javascript
js下用gb2312编码解码实现方法
Dec 31 #Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 #Javascript
JavaScript 学习笔记(六)
Dec 31 #Javascript
JavaScript 学习笔记(五)
Dec 31 #Javascript
JavaScript 学习笔记(四)
Dec 31 #Javascript
javascript showModalDialog模态对话框使用说明
Dec 31 #Javascript
You might like
关于js与php互相传值的介绍
2013/06/25 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
javascript编写简易计算器
2017/05/06 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
Python 调用DLL操作抄表机
2009/01/12 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python matplotlib实时画图案例
2020/04/23 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
学习标兵获奖感言
2014/02/20 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
作风建设整改方案
2014/10/27 职场文书
语文教师个人工作总结
2015/02/06 职场文书
英镑符号 £
2022/02/17 杂记
JS实现数组去重的11种方法总结
2022/04/04 Javascript