var arr = [1, 2, 3];
for (var i = 0, j; j = arr[i++];) {
console.log(j);
}
这段代码的循环条件是什么,看不出来,希望知道的人帮忙解决一下啊
我也看不懂了,求大神来解释 =.=
j = arr[i++]
语句 1 在循环(代码块)开始前执行(可选) 语句 2 定义运行循环(代码块)的条件(可选) 语句 3 在循环(代码块)已被执行之后执行(可选)
答案就是 j = arr[i++] = > j == true
查询js文档发现 语句1,语句2 ,语句3,都是可以省略的;这段代码是省略了那一块呢,语句2和语句3合并了?
var arr = [1, 2, 3];
for (var i = 0, j; j = arr[i++];) {
console.log(j);
}
console.log(i); // 4
i变量到了4,剔除掉i++,说明循环最后的判断语句为j=arr[3]
,arr[3]为undefined,然后j=undefined也返回undefined
比如下面的循环永远也进不去
var j;
while(j=undefined){
$.writeln("never been here")
}
考的是undefined作为判断条件会被认为是false吧.
不过这写法真溜,不用length不用try{}catch(){}就把数组遍历完了,不知道效率如何?
是这么回事没错,但是谁写这样的代码我烧死他 自豪地采用 CNodeJS ionic
@captainblue2013 唉,在一个公众号看的,我也想烧死他
@Smallpath 顶啊,正解,感谢感谢
确实有点蹩脚,不晓得这么写有优势吗
省了点调用方法,但是不要让我看到联调的时候看到这段代码,信不信删数据库跑路? From Noder
从精简代码的角度考虑不如来个 _.each()
呢 :)
这是存在感判断法= =。
@captainblue2013 来啊,烧我!我在三元语法里经常写这种莫名其妙的东西- -
看高手的代码,就像看了一本福尔摩斯侦探小说一样。 做项目不需要高手,能做好就行。
@MiguelValentine 存在感判断法,存在感…,