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 相关文章推荐
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
Mar 14 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
jQuery遍历对象、数组、集合实例
Nov 08 Javascript
Lua表达式和控制结构学习笔记
Dec 15 Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
Aug 17 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 Javascript
js实现图片跟随鼠标移动效果
Oct 16 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
Apr 11 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
smarty缓存用法分析
2014/12/16 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
python实现学生信息管理系统
2020/04/05 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
广告创意求职信
2014/03/17 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
女性健康讲座主持词
2015/07/04 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python