JavaScript总结(3)

一.JavaScript条件语句

脚本的威力体现在它们可以根据人们给出的各种条件做出决策,javascript使用条件语句来做判断

条件语句(conditianal statement)通过判断表达式的值来决定执行还是跳过某些语句,包括if语句和switch语句

在 JavaScript 中,我们可使用以下条件语句:

if语句:

if- 只有当指定条件为 true 时,使用该语句来执行代码

if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码

if...else if....else 语句- 使用该语句来选择多个代码块之一来执行

if..else嵌套语句

switch语句:

switch 语句 - 使用该语句来选择多个代码块之一来执行

1.if语句

if语句是最常见的条件语句。if语句的条件必须放在if后面的圆括号内,条件的求值结果永远是一个布尔值,即只能是true或false。花括号中的语句,不管它们有多少条,只有在给定条件的求值结果是true的情况下才会执行

格式:   if(条件){执行代码}

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>if语句</title>
		<script type="text/javascript">
		var num=5;//赋值
			if(10>num){//判断值是否为true
				alert("小于");//如果为true,则执行代码
			}
		</script>
	</head>
	<body>
	</body>
</html>

 

2.if...else 语句

格式:  if(条件){执行代码1}else{执行代码2}

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>if else 语句</title>
		<script type="text/javascript">
			var h = new Date().getHours();//提取现在值
			if (h < 12) {//判断
				alert("早上好!");//为true时
			}else{
				alert("下午好!");//为false时
			}
		</script>
	</head>
	<body>
	</body>
</html>

 

3.if...else if....else 语句

格式:  if(条件1){执行代码1}else if(条件2){执行代码2}......

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>条件语句</title>
		<script type="text/javascript">
			var mon=new Date().getMonth();//取值
			h=mon+1;
				if (h >= 1 && h < 4) {//判断
					alert("春季");//为true时
				} else if (h >= 4 && h < 7) {//为false时,继续判断
					alert("夏季");//为true时
				} else if (h >= 7 && h < 10) {//为false时,继续判断
					alert("秋季");//为true时
				} else {
					alert("冬季");//为false时
				}
		</script>
	</head>
	<body>
	</body>
</html>

 

4.if..else嵌套语句

当在if/else语句中嵌套使用if语句时,必须注意确保else语句匹配正确的if语句

格式:

if(false){
				if(false){
					alert("true  true");
				}else{
						alert("true  false");
				}
			}else{
				if(true){
					alert("false  true  ");
				}else{
						alert("false  false  ");
				}
			}

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>if 嵌套</title>
		<script type="text/javascript">
			var h = new Date().getHours(); //提取现在的时间值
			var day = new Date().getDay(); //提取星期值
			if (day > 5) { //判断
				alert("周末"); //为true时
				if (h < 12) { //判断
					alert("早上好!"); //为true时
				} else {
					alert("下午好!"); //为false时
				}
			} else {
				alert("周内"); //为false时
				if (h < 12) { //判断
					alert("早上好!"); //为true时
				} else {
					alert("下午好!"); //为false时
				}
			}
		</script>
	</head>
	<body>
	</body>
</html>

 第一个值

 第二个值

5.switch 语句

当所有的分支都依赖于同一个表达式的值时,else if并不是最佳解决方案。

在这种情况下,重复计算多条if语句中的条件表达式是非常浪费的做法,而switch语句正适合处理这种情况

switch语句执行一个多路分支,首先计算expression的值,然后查找case子句的表达式是否和expression的值相同。如果找到匹配的case,那么将会执行这个case对应的代码块。如果找不到匹配的case,那么将会执行default标签中的代码块。如果没有default标签,switch语句将跳过它的所有代码块。

格式:

switch(条件) {

     case 常量1: 执行代码块 1 ;[break;]

     case 常量2: 执行代码块 2 ;[break;]

     .....

     case 常量n: 执行代码块 n ;[break;]

     default: 剩下的

}

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>switch语句</title>
		<script type="text/javascript">
		var day=new Date().getDay();
			switch (day) {
				case 1:
					alert("今天星期一");
					break;
				case 2:
					alert("今天星期二");
					break;
				case 3:
					alert("今天星期三");
					break;
				case 4:
					alert("今天星期四");
					break;
				case 5:
					alert("今天星期五");
					break;
				case 6:
					alert("今天星期六");
					break;
				default:
					alert("今天星期天");
					break;
			}
		</script>
	</head>
	<body>
	</body>
</html>

 

使用switch语句时,要注意以下几点:

  【1】由于每次执行switch语句时,并不是所有的case表达式都能执行到,因此,应该避免使用带有副作用的case表达式,比如函数调用表达式和赋值表达式,最安全的做法是在case表达式中使用常量表达式

  【2】default标签一般都出现在switch的末尾,位于所有case标签之后,当然这是最合理也是最常用的写法,实际上,default标签可以放置在switch语句内的任何地方

  【3】switch语句中,对每个case的匹配操作实际上是'==='恒等运算符比较,而不是'=='相等运算符比较,因此,表达式和case的匹配并不会做任何类型转换

二.JavaScript 循环

条件语句把javascript中的代码变成一条条的分支路径,而循环语句(looping statement)就是程序路径的一个回路,可以让一部分代码重复执行。

它们的工作原理几乎一样:只要给定条件仍能得到满足,包含在循环语句里的代码就将重复地执行下去。一旦给定条件的求值结果不再是true,循环也就到此为止。

JavaScript 支持不同类型的循环:

for - 循环代码块一定的次数

for...in - 循环遍历对象的属性

while - 当指定的条件为 true 时循环指定的代码块

do...while - 同样当指定的条件为 true 时循环指定的代码块

1.for

for 循环是您在希望创建循环时常会用到的工具。

for语句提供了一种比while语句更加方便的循环控制结构,用for循环来重复执行一些代码的好处是循环控制结构更加清晰

格式:

for (语句 1; 语句 2; 语句 3){

       被执行的代码块

}

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>for循环语句</title>
		<script type="text/javascript">
			for (var i = 1; i <= 10; i++) {//循环【当i的值小于10时,则使i的值i++,再次循环】
				alert(i);//输出
			}
		</script>
	</head>
	<body>
	</body>
</html>

2.for...in

for/in语句也使用for关键字,但它和常规的for循环是完全不同的一类循环

格式:for(var 变量 in 数组/对象){被执行的代码块}

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>for in语句</title>
		<script type="text/javascript">
			var obj = { //对象
				name: "zhnagsan",
				age: 23,
				address: "西安"
			};
			for (var myname in obj) {
				alert(myname); //输出对象中的属性
			}
		</script>
	</head>
	<body>
	</body>
</html>

3.while

while语句属于前测试循环语句,也就是说,在循环体内的代码被执行之前,就会对出口条件求值

格式: 

while(判断条件){

        被循环执行的代码

}

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>while 循环</title>
		<script type="text/javascript">
			var i = 1; // 初始条件
			while (i <= 10) {//判断
				alert(i);//输出代码
				i++;//递增
			}
		</script>
	</head>
	<body>
	</body>
</html>

4.do...while

do while语句是后测试循环,即退出条件在执行循环内部的代码之后计算。这意味着在计算表达式之前,至少会执行循环主体一次

格式:

do{

    被循环执行的代码

}while(判断条件);

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>do while语句</title>
		<script type="text/javascript">
			var i = 1; // 初始条件
			do {
				alert(i); //执行的代码
				i++; //递增
			} while (i <= 10) //判断
		</script>
	</head>
	<body>
	</body>
</html>

do/while循环和普通的while循环有两点语法方面不同:

  【1】do/while循环要求必须使用关键字do来标识循环的开始,用while来标识循环的结尾并进入循环条件判断

  【2】do/while循环用分号结尾。如果while循环体使用花括号括起来,则while循环也不用使用分号做结尾

三.JavaScript 跳转语句

跳转语句(jump statement)可以让解释器跳转到程序的其他部分继续执行,包括break、continue和return语句

1.break语句

单独使用break语句的作用是立即退出最内层的循环或switch语句

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>break</title>
		<script type="text/javascript">
			for (var i = 1; i <= 10; i++) {//初始值,判断,递增
				alert(i);//执行代码
				if (i == 5) {//当值为5时
					break;//终止
				}
			}
		</script>
	</head>
	<body>
	</body>
</html>

2.continue语句

continue语句和break语句非常类似,但它不是退出循环,而是转而执行下一次循环

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>continue</title>
		<script type="text/javascript">
			for (var i = 5; i >= 0; i--) {//初始值,判断,递减
				if (i == 2) {//当值为5时
					continue;//终止
				}
				alert(i);//执行代码
			}
		</script>
	</head>
	<body>
	</body>
</html>

3.return语句

函数调用是一种表达式,而所有表达式都有值。函数中的return语句就是指定函数调用后的返回值

四. JavaScript 错误

当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误。

可能是语法错误,通常是程序员造成的编码错误或错别字。

可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。

可能是由于来自服务器或用户的错误输出而导致的错误。

当然,也可能是由于许多其他不可预知的因素。

当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。

描述这种情况的技术术语是:JavaScript 将抛出一个错误。

1.JavaScript try 和 catch

try 语句允许我们定义在执行时进行错误测试的代码块。

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 try 和 catch 是成对出现的。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>try catch</title>
		<script>
			var txt = "";
			function message() {
				try {
					adddlert("Welcome guest!");
				} catch (err) {
					txt = "本页有一个错误。\n\n";
					txt += "错误描述:" + err.message + "\n\n";
					txt += "点击确定继续。\n\n";
					alert(txt);
				}
			}
		</script>
	</head>
	<body>
		<input type="button" value="查看消息" onclick="message()" />
	</body>
</html>

2.finally 语句

finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>finally语句</title>
	</head>
	<body>
		<p>不管输入是否正确,输入框都会再输入后清空。</p>
		<p>请输入 5 ~ 10 之间的数字:</p>
		<input id="demo" type="text">
		<button type="button" onclick="myFunction()">点我</button>
		<p id="p01"></p>
		<script>
			function myFunction() {
				var message, x;
				message = document.getElementById("p01");
				message.innerHTML = "";
				x = document.getElementById("demo").value;
				try {
					if (x == "") throw "值是空的";
					if (isNaN(x)) throw "值不是一个数字";
					x = Number(x);
					if (x > 10) throw "太大";
					if (x < 5) throw "太小";
				} catch (err) {
					message.innerHTML = "错误: " + err + ".";
				} finally {
					document.getElementById("demo").value = "";
				}
			}
		</script>
	</body>
</html>

 

没有输出显示的是:值是空的 

输出的不是数字显示:值不是一个数字

输出比5小的,显示的是:太小

输出比10大的,显示的是:太大

3.Throw 语句

throw 语句允许我们创建自定义错误。

正确的技术术语是:创建或抛出异常(exception)。

如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Throw 语句</title>
	</head>
	<body>
		<p>请输出一个 5 到 10 之间的数字:</p>
		<input id="demo" type="text">
		<button type="button" onclick="myFunction()">测试输入</button>
		<p id="message"></p>
		<script>
			function myFunction() {
				var message, x;
				message = document.getElementById("message");
				message.innerHTML = "";
				x = document.getElementById("demo").value;
				try {
					if (x == "") throw "值为空";
					if (isNaN(x)) throw "不是数字";
					x = Number(x);
					if (x < 5) throw "太小";
					if (x > 10) throw "太大";
				} catch (err) {
					message.innerHTML = "错误: " + err;
				}
			}
		</script>
	</body>
</html>

 

五.JavaScript 变量提升

1.JavaScript 变量提升

JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

声明提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>变量提升</title>
	</head>
	<body>
		<p id="demo"></p>
		<script>
			x = 5; // 变量 x 设置为 5
			elem = document.getElementById("demo"); // 查找元素 
			elem.innerHTML = x; // 在元素中显示 x
			var x; // 声明 x
		</script>
	</body>
</html>

  

2.JavaScript 初始化不会提升

JavaScript 只有声明的变量会提升,初始化的不会。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>初始值不会提升</title>
		
	</head>
	<body>
		<p id="demo"></p>
		
		<script type="text/javascript">
			var x = 5; // 初始化 x
			elem = document.getElementById("demo"); // 查找元素
			elem.innerHTML = x + " " + y;           // 显示 x 和 y
			var y = 7; // 初始化 y
		</script>
	</body>
</html>

 

六.javascript:void(0)

javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>链接</title>
	</head>
	<body>
		<a href="#">空连接</a>
		<a href="javascript:void(0);">死链接</a>
	</body>
</html>

 

href="#"与href="javascript:void(0)"的区别

# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。

而javascript:void(0), 仅仅表示一个死链接。

在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。

如果你要定义一个死链接请使用 javascript:void(0) 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值