JavaScript基础之四——选择与循环结构

JavaScript基础之四——选择与循环结构

    选择结构与循环结构是编程中处理逻辑的核心结构,JavaScript中支持if-else和switch-case选择结构,支持for,for-in,do-while,while循环结构。并且可以使用break与continue语句进行循环的跳出,简单的条件选择if语句示例如下:

//if条件语句
if (true) {
	console.log("条件语句");
};
if (false) {

} else {
	console.log("if-else语句");
};
var a = 10;
if (a < 10) {
	console.log("a<10");
} else if (a == 10) {
	console.log("a=10");
} else {
	console.log("a>10");
};

switch-case选择结构用于多分支条件的选择,示例如下:

//选择语句
var b = "hi";
switch (b) {
	case "hello":
		{
			console.log("Hello world");
		}
		break;
	case "hi":
		{
			console.log("Hi world");
		}
		break;
	default:
		{
			console.log("都没匹配上");
		}
}

需要注意,每个case结构后面原则上都需要使用break进行中断匹配,如果不添加此break,则匹配到一个case语句后switch结构并不会结束,会继续尝试匹配后面的case条件。

    for循环结构用于处理大量重复的逻辑,示例如下:

for (var i = 0; i < 10; i++) {
	console.log("循环" + i);
}
for (var i = 0; i < 10; i++) {
	console.log("循环" + i);
	if (i == 2) {
        //使用break可以提前中断循环
		break;
	};
}

JavaScript还有一种更高效的循环模式,for-in结构,这种结构专门用来遍历对象,其可以将对象的属性遍历出来,示例如下:

var obj1 = {
	name: "jaki",
	age: 25
};
var obj2 = [1, 2, 3, 4, 5, 6, 7, 8];
for (var x in obj1) {
    //跳过本次循环 并不是跳出循环
	if (x == "name") continue;
	console.log(x + ":" + obj1[x]);

}
for (var x in obj2) {
	console.log(x + ":" + obj2[x]);

}

需要注意,对于数组,其遍历出来的是数组的下标,并不是其中的值,这和C/OC,Swift等语言有所差异,也证明了数组在JavaScript中其实就是一种特殊的对象。

    while循环和do-while循环的差异在于whlie结构是先进行循环条件的判断,再进入循环体,而do-while结构则是先进入循环体,在进行循环条件的判断,示例如下:

var c = 1;
while (c < 10) {
	console.log(c);
	c++;
}
do {
	console.log(c);
	c--;
} while (c > 1);

    前面提到过break和continue语句,break语句用于中断switch-case匹配或者跳出最近的循环,跳出循环的意思是指执行到break后,无论后面循环次数还有多少次,直接跳出,执行循环结构之后的代码。continue语句的作用则是跳出最近的本次循环,接着进行循环条件的判断,如果满足会继续进行循环,并且如果有多层循环嵌套,break和continue也可以通过label标签指定具体跳出那层循环,示例如下:

LAB: for (var i = 0; i < 5; i++) {
	for (var j = 0; j < 5; j++) {
		if (j == 2) {
			break LAB
		};
		console.log(i + '==' + j);
	};
};

上面的代码,如果不使用LAB标签,则外层循环不会被中断。

前端学习新人,有志同道合的朋友,欢迎交流与指导,QQ群:541458536

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一英里广度一英寸深度的学习

Leetcode 第一题 《两数之和》

951
来自专栏Python小屋

Python把列表中的数字尽量等分成n份

问题描述:假设一个列表中含有若干整数,现在要求将其分成n个子列表,并使得各个子列表中的整数之和尽可能接近。 下面的代码并没有使用算法,而是直接将原始列表分成n...

4998
来自专栏决胜机器学习

PHP数据结构(十七) ——内部排序综述

PHP数据结构(十七)——内部排序综述 (原创内容,转载请注明来源,谢谢) 一、稳定性 假设Ki=Kj(1<=i,j<=n,i!=j),且排在序列前的序列中R...

34112
来自专栏desperate633

LeetCode 7. Reverse Integer分析代码

802
来自专栏前端布道

图解javascript this指向什么?

JavaScript 是一种脚本语言,支持函数式编程、闭包、基于原型的继承等高级功能。JavaScript一开始看起来感觉会很容易入门,但是随着使用的深入,你会...

4169
来自专栏五分钟学算法

每天一算:Remove Nth Node From End of List

采取双重遍历肯定是可以解决问题的,但题目要求我们一次遍历解决问题,那我们的思路得发散一下。

1193
来自专栏书山有路勤为径

复杂的链表的深度拷贝

Copy List with Random Pointer 已知一个复杂的链表,节点中有一个指向本链表任意某个节点的碎甲指针(也可以为空),求这个链表的深度拷...

681
来自专栏Coding迪斯尼

Reactjs开发自制编程语言Monkey的编译器:语法解析

1362
来自专栏技术碎碎念

LeetCode-15-3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b ...

37611
来自专栏Redis源码学习系列

Redis源码学习之压缩列表

压缩列表是列表对象、哈希对象和有序集合对象的底层实现之一。以列表对象为例,当列表节点都是比较小的整数或者比较短的字符串的时候,Redis就会选择压缩列表来做底层...

790

扫码关注云+社区