时间:2014-01-29 来源:

JavaScript数组循环引起的思考

看代码web前端制作,不说话:
复制代码 代码如下:

var i=arr.length;
while(i--)
{
//写点啥?
}

上面是Google array.js 程序中建议改进的代码.思考为什么i-- 到了 i为0时while循环结束了?

下面的代码与它等价:
复制代码 代码如下:

var i=arr.length;
for(;i--;)
{
//i--写在两个分号的中间,web前端制作奇怪吗?不奇怪吗?
}

震撼?没感觉?

呃.平时我们写在两个分号中间的是什么?这个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这个示例代码写得一点都不“实战”?那好吧,div前端切图下面是一位土豆网前端开发高手的代码示例片段:
复制代码 代码如下:

var obj = {status:0, msg:'xxxx'};
var data = obj.status || 'xxxx';

这个总够“隐蔽”的了!

再强调一次:数值0的隐式转换成布尔值为false的条件是在if()中、while()中、for(;;)两个分号的中间等布尔判定的条件表达式.
点击次数:804
作者:
web前端行业资讯
Web new NewsList
谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日【DWR】Helloworld 【移动开发】2014年12月01日网上最热的三款完美Vista激活工具下载2014年01月29日深入理解JavaScript系列(17):面向对象编程之概论 【综合】2015年07月20日史上最前的互联网词汇汇总【综合】2014年12月10日C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)【移动开发】2015年07月13日hdoj-2059-龟兔赛跑【DP】【编程语言】2015年08月14日关于JAVA经典算法40题(超实用版)2014年01月30日基于AndroidService生命周期的详细介绍2014年01月30日【翻译】JWMediaPlayer中文文档2014年01月29日程序图标的设计思路2014年01月28日js编码、解码函数介绍及其使用示例2014年01月29日Firefox展示新奇的HTML5手机操作系统 ,,2016年07月24日02.lomboz与JDBC处理DDL语句应用举例 【综合】2015年04月28日【Javaweb】修改EclipseforJavaEE中新建Jsp的默认编码,避免每次新建都要改编码的问题 【架构设计】2015年03月30日CSS网页右下角布局代码 【移动开发】2015年02月28日Android安全输入设计与思考 【移动开发】2015年07月13日Java导出Excel表(poi)名中文乱码问题处理 【编程语言】2015年05月11日gcc源代码分析,get_identifier()函数分析,printf产生标识符的过程 【综合】2015年01月12日HTML5移动开发框架SenchaTouch入门教程汇总 ,,2016年06月23日SQLServer再学习(1)——varchar、nvarchar、char的区别 【系统运维】2015年07月20日鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)2014年01月29日K2工作流学习系列(四)---K2BlackPearl和K2SmartForm学习总结 【编程语言】2015年04月13日数A去掉一个数字后得到B,给出A与B的和N求所有可能的数A 【综合】2015年04月07日使用Ajax以及Jquery.form异步上传图片 【架构设计】2015年06月11日阿里云ecs【Web前端】2014年12月19日数据结构基础(4)--快速排序 【编程语言】2015年01月04日hdu1062TextReverse 【移动开发】2015年06月29日【ASP.NET】——ASP.NET中的内置对象 【编程语言】2015年04月17日Class<T>类型参数(详解) 【云计算】2014年12月11日js中2005-05-02怎么转换为200552?2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)