源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript 数组循环引起的思考

  • 时间:2022-10-03 04:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript 数组循环引起的思考
看代码,不说话:
[url=http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/array/array.js?r=2]array.js[/url] 程序中[url=http://jsmore.com/archives/google-closure-how-not-to-write-javascript/]建议改进[/url]的代码。思考为什么i-- 到了 i为0时while循环结束了? 下面的代码与它等价:
[u]复制代码[/u] 代码如下:
var i=arr.length; for(;i--;) { //i--写在两个分号的中间,奇怪吗?不奇怪吗? }
震撼?没感觉? 呃。平时我们写在两个分号中间的是什么?这个i--按“常理”应该是在第二个分号之后啊。那我们看看C语言的代码:
[u]复制代码[/u] 代码如下:
int main() { int i = 5; while(i--) { printf("%d ", i); } while(1); return 0; }
运行的结果也是与JavaScript惊人的一致! 好吧。我不知道这是为什么?只知道数值0转换成布尔值为false: var i= !!0; 而别的数值转换成布尔值为true。上面的示例程序代码是将数值到布尔值的显式转换。 0隐式转换为false的情况用下面的JS程序测一下:
[u]复制代码[/u] 代码如下:
var i=0; if(i) { alert('if'); } else{ alert('else'); } alert('不管怎么if和怎么else程序都要走这儿');
if这个示例代码写得一点都不“实战”?那好吧,下面是一位土豆网前端开发高手的代码示例片段:
[u]复制代码[/u] 代码如下:
var obj = {status:0, msg:'xxxx'}; var data = obj.status || 'xxxx';
这个总够“隐蔽”的了! 再强调一次:数值0的隐式转换成布尔值为false的条件是在if()中、while()中、for(;;)两个分号的中间等布尔判定的条件表达式。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部