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 相关文章推荐
服务器安全设置的几个注册表设置
Jul 28 Javascript
关于IE7 IE8弹出窗口顶上
Dec 22 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
Javascript中自动切换焦点实现代码
Dec 15 Javascript
js Array操作的最简短最容易理解方法
Dec 09 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
探究Javascript模板引擎mustache.js使用方法
Jan 26 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
JavaScript 对象详细整理总结
Sep 29 Javascript
从零学习node.js之文件操作(三)
Feb 21 Javascript
深入理解node.js http模块
Jan 24 Javascript
详解用js代码触发dom事件的实现方案
Jun 10 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
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
r.js来合并压缩css文件的示例
2018/04/26 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
销售人员求职的自我评价分享
2014/03/15 职场文书
关于建议书的格式范文
2014/05/20 职场文书
责任担保书范文
2014/05/21 职场文书
欢度春节标语
2014/07/01 职场文书
绘画专业自荐信
2014/07/04 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python