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 相关文章推荐
java必学必会之static关键字
Dec 03 Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
使用 bootstrap modal遇到的问题小结
Nov 09 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
JavaScript实现同一个页面打开多张图片
Dec 29 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 23 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
May 19 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页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
JS无限级导航菜单实现方法
2019/01/05 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
简单理解Python中基于生成器的状态机
2015/04/13 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
keras导入weights方式
2020/06/12 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
清洁工表扬信
2014/01/08 职场文书
大学生通用个人的自我评价
2014/02/10 职场文书
《口技》教学反思
2014/02/21 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
大气污染防治方案
2014/05/19 职场文书
应急管理培训方案
2014/06/12 职场文书
文秘自荐信
2014/06/28 职场文书
学雷锋日活动总结
2015/02/06 职场文书
中小企业员工手册范本
2015/05/14 职场文书
辛亥革命观后感
2015/06/02 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python