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 中that的含义示例介绍
May 14 Javascript
后台获取ZTREE选中节点的方法
Feb 12 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
Sep 19 Javascript
javascript少儿编程关于返回值的函数内容
May 27 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
关于js对textarea换行符的处理方法浅析
Aug 03 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
微信小程序实现多选功能
Nov 04 Javascript
JS实现带阴历的日历功能详解
Jan 24 Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
Vue.js 无限滚动列表性能优化方案
Dec 02 Javascript
js实现多个标题吸顶效果
Jan 08 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自动获取目录下的模板的代码
2010/08/08 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
jquery 的 $("#id").html() 无内容的解决方法
2010/06/07 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
python在控制台输出进度条的方法
2015/06/20 Python
python异常和文件处理机制详解
2016/07/19 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python图像和办公文档处理总结
2019/05/28 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
开会迟到检讨书
2014/01/08 职场文书
小学生作文评语大全
2014/04/21 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
学校中秋节活动总结
2015/03/23 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python