js中if 和 switch 判断语句的区别

一直说想要研究底层原理,把知识学深一些,原来真的像初中的物理老师说的那样,把基础的原理都学会,就能做难的题目,高难度题目的框架都是靠简单的原理搭建的。

if语句

		var num = 5;
		if(num>7){
			document.write('数字大于7')
		}else if(num>6){
			document.write('数字大于6')
		}else if(num>5){
			document.write('数字大于5')
		}else if(num>4){
			document.write('数字大于4')
		}else{
			document.write('前面的条件都不满足')
		}

switch语句

		var num = 1;
		switch(num){
			case 4 :
				document.write('数字是4');
			break;
			case 5 :
				document.write('数字是5');
			break;
			case 6 :
				document.write('数字是6');
			break;
			case 7:
				document.write('数字是7');
			break;
			default :
				alert('前面的条件不满足')
			break;
		}

从上面的例子可以看出

1、当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if。。else是遍历所以得可能值,知道找到符合条件的分支,如此看来switch的效率确实比ifelse要高的多。

2、switch…case只能处理case为常量(是不可以改变的值)的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch…case来处理的。所以,switch只能是在常量选择分支时比ifelse效率高,但是ifelse能应用于更多的场合,ifelse比较灵活。

if和switch的区别

if语句:表达式的结果是boolean布尔类型(常用于区间判断)

switch语句:表达式类型不能是boolean布尔类型,可能是byte,int,char,string,枚举(常用于等值判断)

语句的选择

能用switch语句实现的就一定可以使用if来实现,但是反之不一定,如果是区间范围就采用if,如果是等值判断请使用switch

1.switch case与if else的效率问题

1.1 .switch case与if else的区别:switch case会生成一个跳转表来指示实际的case分支的地址,而if…else却需要遍历条件分支直到命中条件,

1.2. switch case的优缺点

(1)switch case的优点:

当分支较多时,用switch的效率是很高的。因为switch是确定了选择值之后直接跳转到那个特定的分支.

(2)witch case的缺点:

1.switch…case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch…case的空间利用率将变得很低。

2.switch…case只能处理case为常量的情况。

1.3. if else的优缺点

(1)if else的优点:if else能应用于更多的场所以if else比较灵活。

(2)if else的缺点:if else必须遍历所以得可能值。

总结:

在选择分支较多时,选用switch…case结构会提高程序的效率,但switch不足的地方在于只能处理字符或者数字类型的变量,if…else结构更加灵活一些,if…else结构可以用于判断表达式是否成立,比如if(a+b>c),if…else的应用范围更广,switch…case结构在某些情况下可以替代if…else结构。

3.switch不加break为什么具有直通性?

用break的作用就是跳出switch,不执行其他的case,如果不加就一直走下去,一直等到下一个break后跳出,如果一直没有break,就要等到switch结束后退出。

相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页