for循环的更多写法
在看设计模式这本书,遇到一个令人疑惑的for循环语句
for (var i = 0, type;type = ['String', 'Array', 'Number'][i++]) {
代码块
}
比较疑惑,因为从平时接触的来看基本上都是
for(语句1,语句2,语句3){
}
语句1:起始
语句2:循环终止条件
语句3:在循环后被执行的语句
现在的疑惑如下
for(var i =10,i--;){
}
实际上上面的语句等同于,这是为什么
for(var i =0, i<10 i++;){
}
原来这里等同于把循环终止条件和循环被执行后执行的语句相结合了即把判断和赋值放到一起了,一边循环一边赋值,
i--是什么判断条件,当i--为fasle即,循环终止,在js中0, null, undefined, false, ‘’,
根据Boolean的隐形转化,其结果为false,即i=0时条件终止
再回到我们之前的问题
for (var i = 0, type;type = ['String', 'Array', 'Number'][i++]) {
代码块
}
var i =0,type;//语句1
type = ['String', 'Array', 'Number'][i++] //语句2
即这里的判断+赋值调件为type = ['String', 'Array', 'Number'][i++],终止条件为type=‘undefined’
for循环的更多写法的更多相关文章
- for循环---几种写法
最常见的写法 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- javascript中 for循环的一些写法 for length 以及for in 还有 for of 的区别
最近在写一些前端的代码,遇到一个产品列表遍历的问题,正好使用到for 的几种用法,于是研究了下. 代码如下,先说明下goodslist 是一个产品列表 形如这样的数据格式 { ‘types’:1, ' ...
- foreach循环的简单写法
简单的foreach循环写法: pickedItems.ForEach(item => { this.List.Remove(item); }); //注意,List 必须和pickedItem ...
- for 循环新的写法==列表解析
1. (for x in L1) 是一个可迭代对象: 2. 列表解析比for 循环快,列表解析的迭代在解释器内部是以C语言速度执行, 而不是手动python代码执行: (x+10 for x in L ...
- 054、Java中使用for循环第二种写法实现1~100的累加
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- js中for循环遍历的写法
众所周知,for循环是编程中必不可少的知识点:那么如何高效的写出循环呢? 我们要先知道for循环的基础样式是由自有变量自增自减和if判组成的: 1 for(条件){ 2 执行语句 3 } 而for循环 ...
- shell 之for循环几种写法
参见博客 http://blog.csdn.net/babyfish13/article/details/52981110 ,此博客写的非常清晰明了.
- 织梦dedecms模板制作时,循环递增autoindex使用方法整理
文章转载:http://www.maihui123.com/dedecms/2012051964.html 织梦dedecms模板制作时,我们需要每循环一次,变量加一,这是就需要使用到autoinde ...
- Linux入门第五天——shell脚本入门(下)基础语法之循环
一.循环 1.不定循环 有两种形式: while [ condition ] <==中括号内的状态就是判断式 do <==do 是循环的开始! 程序段落 done <==done 是 ...
随机推荐
- Redis 集群搭建(基于Linux)
一.基础环境 1.虚拟机 VMware 15.x 2.Linux系统,用的是Centos7的Linux系统 3.Redis数据库版本 5.0.3 二.Redis集群简介 1.背景 Redis在3.0版 ...
- Linux对目录操作命令
cd /home 进入 '/ home' 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~u ...
- StopWatch任务计时器
介 绍: StopWatch 是用来计算程序块的执行时间工具, 目前有好多框架都有实现提供此工具(实现结果都区别不大), 本文介绍org.springframework.util.StopWatc ...
- KAFKA集群搭建(自带zookeeper)
1. KAFKA下载地址:http://kafka.apache.org/downloads KAFKA-快速上手-官方网站:http://kafka.apache.org/quickstart 2. ...
- Ubuntu 14.04 kylin 安装 OpenCV 2.4.9|3.0.0
首先安装依赖 sudo apt-get -y install libopencv-dev sudo apt-get -y install build-essential checkinstall cm ...
- vue 父子组件通信详解
这是一篇详细讲解vue父子组件之间通信的文章,初始学习vue的时候,总是搞不清楚几个情况 通过props在父子组件传值时,v-bind:data="data",props接收的到底 ...
- 代码作家Alpha冲刺阶段博客目录
一.Scrum Meeting 1. [第六周会议记录] 2. [第七周会议记录] 二.测试报告 Alpha阶段测试报告 三.习得的软工原理/方法/技能 1. 在项目前期准备中,我们学会了一些页面设 ...
- 学习笔记04IIS
IIS机制:1.能监听端口,获取socket的客户端对象2.获取请求报文,将请求报文变成对象.3.处理请求报文,通过HttpApplication.ProcessRequest方法来处理HttpCon ...
- makefile中":="和“=”的区别
在makefile中,经常能看到这种赋值方式: MyNumber := 这种方式洋名叫做expansion assignment, 翻译过来叫扩展赋值, 我一般就叫冒号等号.这位同学就问了,那么它和普 ...
- [考试反思]1015csp-s模拟测试74:压迫
其实同时也是第27,一大片并列的. 真的是越考越烂. T1是个弱化的贪心原题,15分钟拿下没什么可说的. T2打的记忆化搜索,hash_mod太小撞哈希了,50->30 T3,想不到正解,90分 ...