javascript知识点第二课

第二课笔记

1.判断语句
  • if(条件表达式)

    **if语句是最常用,最基本的**条件**判断语句,通过条件判断式的**值**来确定**是否**执行一段语句,或者*选择*执行哪部分的语句。
    if(表达式){
    语句
    }

  • if…else语句

    **if…else语句是if 语句的标准形式,在if语句的基础上,增加了一个*else从句*,当表达式的值式*False*的时候执行else语句。
    if(表达式){
    语句1
    }else{
    语句2
    }

  • if…else if…else
    if(表达式1){
    语句1
    }else if(表达式2){
    语句2
    }else if(表达式3){
    语句3
    }else{
    语句n+1
    }

  • if 的镶嵌

  • if(表达式1){
    if(表达式2){
    语句1
    }else{
    语句2
    }
    }else{
    if(表达式3){
    语句3
    }else{
    语句4
    }
    }

  • while表达式
    while循环语句也称为前测试循环语句,它是利用一个条件来控制是否要继续重复的执行这个语句。
    while(表达式){
    语句
    }

  • do…while语句
    do…while 语句也被称为后测试循环语句,它是利用一个条件来控制是否要重复执行这个语句,与while不同的是,它先执行一次循环语句,然后在去判断时候要继续执行。

do{
语句
}while(表达式)

  • for 循环语句
    for循环语句也称为计次循环语句,一般用于循环次数已知的情况。
    for(初始化表达式;条件表达式;迭代表达式){
    语句
    }

  • swicth语句
    swicth 语句式典型的多路分支语句,其作用与if. else.if语句相同,但swicth比if 语句更具有可读性,它可以更具一个表达式的值,来选择不同分支的执行。而且switch语句允许在找不到一个匹配条件下允许执行默认的一条语句。

    switch (表达式){
    case 常量表达式:
    语句
    break
    case 常量表达式:
    语句
    break
    }

跳出语句
  • continue语句

    用于跳过本次循环,并开始下一次循环

    for(var i=1;i<10;i++){
    if(i==6)continue
    document.write(‘值为’+i)
    }

  • break语句
    在循环语句中,break语句用于跳出循环。

    for(var i=1;i<10;i++){
    if(i==6)break
    document.write(‘值为’+i)
    }

  • 异常处理语句
    try:尝试执行的关键字
    catch:捕捉异常的关键字
    finally:最终一定会被处理的代码,该关键字和大括号都可以不写。

  • Error对象
    try…catch…finally 语句中的catch通常捕捉到的对象为Error对象,当运行Java Script时候,如果产生了错误和异常,会生成一个Error对象实例来描述错误,该实例中包含了一些特定的错误信息。
    Error对象有以下两个属性

name:表示异常类型的字符串
message:实际的异常信息

  • throw语句主动抛出异常
    throw new Error(内容)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    
  var a=10
    var b=20
    if(b>a){
        document.write('b大于a')
    }if(b<a){
        document.write('b小于a')
    }

var a=5;
 if(a>5){
	 alert(a);
 }else{
	 alert(1);

  var i=1;
 while(i<=10){
	 console.log(i++);
 } 
     
 do{
	 console.log(i++);
 }while(i<=10); 
     
 for (var i=1;i<=10;i++){
	 console.log(i);
 } 
     var i='窗前明月光'

    }finally {
        alert('实际错误信息为;'+exception.message)
    }

     var i='窗前明月光'
  try{
      document.write(str.charat(5))
  }catch (exception){
      alert('程序错误')
  }finally {
      alert('其实我也可以不用 写')
     
             try{
        document.write(str.charat(5))
    }catch(exception){
</script>
</head>
<body>

</body>
</html>
2.函数function
  • function的几种用法
    1.最基本的作为一个本本分分的函数声明使用。
    2.作为一个类构造器使用:
    3.作为闭包使用
    4.可以作为选择器使用
    5.以上四中情况的混合应用:
    6.利用Function处理ajax返回的js脚本:

  • 函数function
    函数也是一个对象
    函数中可以封装一些功能,在需要的时候可以执行这些功能
    使用typeof 返回function

    调用函数时,解析器不会检查实参类型
    所有要注意,是否有可能会接收非法参数,如果有可能则需要对参数类型惊醒检查
    函数的实参可以是任意类型

调用函数时。解析器也不会检查实参的数量
多余实参不会被赋值
少于实参的数量少于形参的数量,则没有对应的实参将是undefined,

调用
fun();
return后得知将会作为函数执行的结果返回
可以用一个变量接受该值
return是函数中最后一句话
如果return后不跟值,返回一个undefined
如果函数中不写return,则返回undefined

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
 
 
 
 function fun(){
 alert("我是function");
} 

 function sum(a,b){
 return a+b;
}
var value=sum(1,2);
console.log(value) */;

function sum(a,b){
	return a+b;
	
}
sum(1,2);
</script>
</head>
<body>

</body>
</html>
3.立即执行函数

声明一个函数,并马上调用这个匿名函数就叫做立即执行函数;即立即执行函数是定义函数以后立即执行该函数。立即执行函数往往只会执行一次,立即执行函数会形成一个单独的作用域,我们可以封装一些临时变量或者局部变量,避免污染全局变量

  • 立即执行函数有哪些作用
    1、改变变量的作用域(创建一个独立的作用域)
    2、封装临时变量
  • 其他的写法
(function foo(){console.log("Hello World!")}())//用括号把整个表达式包起来,正常执行
(function foo(){console.log("Hello World!")})()//用括号把函数包起来,正常执行
!function foo(){console.log("Hello World!")}()//使用!,求反,这里只想通过语法检查。
+function foo(){console.log("Hello World!")}()//使用+,正常执行
-function foo(){console.log("Hello World!")}()//使用-,正常执行
~function foo(){console.log("Hello World!")}()//使用~,正常执行
void function foo(){console.log("Hello World!")}()//使用void,正常执行
new function foo(){console.log("Hello World!")}()//使用new,正常执行

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

 (function(){
  alert("立即执行");
 })();
  
  (function(a,b){
   alert(a+b);
  })(1,2);
</script>
</head>
<body>

</body>
</html>
4.数组(Array)
  • 数组(Array)
    数组也是一个对象
    和普通对象功能类似,也是用来存储值的
    不同的是普通对象时使用字符串作为属性名
    二数组使用数字来作为索引操作元素

  • 索引
    从0开始的整数
    数组的存储性能比普通对象要好,在开发中我们经常使用宿主来存储一些数据

  • JavaScript中创建数组有两种方式
    (一)使用 Array 构造函数:
    var arr1 = new Array(); //创建一个空数组
    var arr2 = new Array(20); // 创建一个包含20项的数组
    var arr3 = new Array(“lily”,“lucy”,“Tom”); // 创建一个包含3个字符串的数组
    (二)使用数组字面量表示法:
    var arr4 = []; //创建一个空数组
    var arr5 = [20]; // 创建一个包含1项的数组
    var arr6 = [“lily”,“lucy”,“Tom”]; // 创建一个包含3个字符串的数组

  • 基本功能

    • 1.push()
      该方法可以向数组的末尾添加一个或多个元素,并返回数组的新长度

    • 2.pop()
      该方法可以删除数组的最后一个元素,并将被删除的元素作为返回值返回

    • 3.shift()

      可以删除数组中的第一个元素,并将被删除的元素作为返回值返回,如果数组为空则返回undefined 。

    • 4.unshift()
      向数组开头添加一份或多个元素,并返回新的数组长度
      向前边插入元素一会,其他元素索引会一次向后调整

    • 5.slice()

      返回从原数组中指定开始下标到结束下标之间的项组成的新数组。
      可以用来从数组提取指定元素
      该方法不会改变原数组,而是将截取到的远胜于封装为一个先数组返回
      参数
      截取开始的位置索引,包含开始索引
      截取结束位置的索引,不包含结束索引
      第二个参数可以省略不写,此时会截取从开始索引到最后
      索引可以传递负值,如果传递赋值则从后往前计算
      -1倒数第一个 -2倒数第二个

    • 6.splice()
      很强大的数组方法,它有很多种用法,可以实现删除、插入和替换。
      删除:可以删除任意数量的项,只需指定 2 个参数:要删除的第一项的位置和要删除的项 数。例如, splice(0,2)会删除数组中的前两项。
      插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、 0(要删除的 项数)和要插入的项。例如,splice(2,0,4,6)会从当前数组的位置 2 开始插入4和6。
      替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数: 起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例 如,splice (2,1,4,6)会删除当前数组位置 2 的项,然后再从位置 2 开始插入4和6。
      splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除 任何项,则返回一个空数组。
      参数
      1.表示开始位置的索引
      2.表示删除的额数量
      第三个及以后
      可以传递一些新的元素,这些元素会自动插入到开始位置索引前边

    • 7.concat()
      将参数添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到 这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它 只是复制当前数组并返回副本。
      可以链接两个或多个数组,并将新数组返回
      不会对原数组产生影响

    • 8.join()
      将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔 符,该方法只接收一个参数:即分隔符。
      该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回

    • 9.reverse()
      该方法用来反转数组,该方法会直接修改原数组

    • 10.sort()
      按升序排列数组项——即最小的值位于最前面,最大的值排在最后面。
      可以用来对数组进行排序
      也会映像原数组,默认会按照你的编码进行排序

    • 11.forEach()
      这个方法只支持IE8以上浏览器
      对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。 foEach()方法需要一个函数作为参数
      像这种函数,我们创建但不由我们调用,我们成为回调函数
      数组中有几个元素函数就会执行几次,每次执行是,浏览器会将遍历的元素
      以实参的形式传递进来,我们可以来定义形参,来读取这些内容
      第一个参数,就是当前正在遍历的元素
      第二个参数,就是当前正在遍历的元素的索引
      第三方参数,就是当前遍历的数组

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
/**
 * 
 //创建数组对象
 */
 var arr=new Array();
 console.log(typeof arr);
 //向数组添加元素
 //语法:数组名[索引]=值;
 //如果读取不存在的索引,不会报错而是返回undefined
 //对于非连续的数组,使用length会获取数组最大索引+1
 //对于非连续的数组,使用length可以获取到数组的长度
 arr[0]=1;
 arr[1]=2;
 arr[2]=5;
 var arr2 = new Array(1,2,3,4);
 var arr3 = new Array(10);
 console.log(arr3.length);
 //arr.length=10;
 //向数组最后一个位置添加元素
 arr[arr.length]=6;
 
 //使用字面量来创建数组语法
 var sz=[1,2,3,4,5];
// console.log(typeof sz);
 sz=[[1,1],[2,3]];
//console.log(sz[0]);	
var shus=["孙悟空","猪八戒","沙和尚"];
//push()
//该方法可以向数组的末尾添加一个或多个元素,并返回数组的新长度
var value=shus.push("白骨精","蜘蛛精");
console.log(value);
console.log(shus);
//pop()
//该方法可以删除数组的最后一个元素,并将被删除的元素作为返回值返回
var zhi=shus.pop();
console.log(zhi);
console.log(shus);
//unshift()
//向数组开图添加一份或多个元素,并返回新的数组长度
//向前边插入元素一会,其他元素索引会一次向后调整
var le=shus.unshift("唐僧","白龙马");
console.log(le);
console.log(shus);
//shift()
//可以删除数组中的第一个元素,并将被删除的元素作为返回值返回
var res=shus.shift();
console.log(res);
console.log(shus);
</script>
</head>
<body>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
//数组遍历
var arr=[1,2,3,4,5,7];
/* for(var i=0;i<arr.length;i++){
	console.log(arr[i]);
}
 */
/* 一般都用for循环遍历数组
JS中还提供了一个方法来遍历数组
forEach()
 这个方法只支持IE8以上浏览器
 foEach()方法需要一个函数作为参数
 像这种函数,我们创建但不由我们调用,我们成为回调函数
 数组中有几个元素函数就会执行几次,每次执行是,浏览器会将遍历的元素
 以实参的形式传递进来,我们可以来定义形参,来读取这些内容
 第一个参数,就是当前正在遍历的元素
 第二个参数,就是当前正在遍历的元素的索引
 第三方参数,就是当前遍历的数组
 */
/*  arr.forEach(function(value,index,obj){
	 //console.log(value);
 }); */
 //slice()
 //可以用来从数组提取指定元素
 //该方法不会改变原数组,而是将截取到的远胜于封装为一个先数组返回
 //参数
 //截取开始的位置索引,包含开始索引
 //截取结束位置的索引,不包含结束索引
 //第二个参数可以省略不写,此时会截取从开始索引到最后
 //索引可以传递负值,如果传递赋值则从后往前计算
 //-1倒数第一个 -2倒数第二个
/*  var arr=[1,2,3,4,5,6,7];
 var sz=arr.slice(1,-1);
 console.log(sz); */
 //splice()
 //可以删除数组中的指定元素
 //使用splice()会映像原数组,会将指定元素从原数组中删除
 //并将被删除的元素作为返回值返回
 //参数
 //1.表示开始位置的索引
 //2.表示删除的额数量
 //第三个及以后
 //可以传递一些新的元素,这些元素会自动插入到开始位置索引前边
 //arr.splice(2,0,10,20,30);
 //console.log(arr);
 
 //concat()可以链接两个或多个数组,并将新数组返回
 //不糊对原数组产生影响
 var arr=[1,2,3,4,5,6,7];
 var arr1=[9,8,7];
 var sz=arr.concat(arr1,11,22,33);
 console.log(sz);
 
 //join()
 //该方法可以将数组转换为一个字符串
 //该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回
 //在join()中可以指定一个字符串作为参数,链接所有数组中的元素
 //如果不指定参数,默认用'’作为链接符
 
 var value=arr.join("@");
 console.log(typeof value);
 console.log(value);
 
 //reverse()
 //该方法用来反转数组,该方法会直接修改原数组
 arr.reverse();
 console.log( arr);
 
 
 //sort()
 //可以用来对数组进行排序
 //也会映像原数组,默认会按照你的编码进行排序
 arr.sort();
 //console.log( arr);
 //对于纯数字的数组,使用sort().也会按照Unicode编码排序
 //所以我们可能会的到错的结果
 //我们可以自行定制排序规则
 //可以在sort()添加一个回调函数来制定规则
 arr=[2,1,3,2,5,4,6];
 arr.sort(function(a,b){
	 if(a>b){
		 return -1;
	 }else if(a<b){
		 return 1;
	 }else {
		 return 0;
	 }
	 return a-b;
 });
 console.log(arr1);
 
</script>
</head>
<body>

</body>
</html>
练习题
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
青蛙爬井
/* var i=0;
var n=1;
while(i<10){
	i+=5;
	if(i>=10)break;
	i-=4;
	console.log(n++);
} */
/* var gao=0;
var tianSe=true;
var num=0;
do{
	if(tianSe){
		gao=gao+5;
		tianSe=false;
	}else{
		gao=gao-4;
		tianSe=true;
		num++;
	}
	}while(gao<10);

/*
    *
   ***
  *****
 *******
*********
*/

   console.log(num); */
/*    var row=5; // row表示总行数
   for(var r=1;r<=row;r++){  //外层循环控制行数 r表示每次变化的行数
      var triangle="";   //triangle表示最后的三角形
      for(var space=r;space<row;space++){ //此循环控制空格数 space表示空格数
         triangle+=" ";
      }
      for(var star=1;star<=2*r-1;star++){ //此循环控制 * 数 star表示*数
         triangle+="*";
      }
   console.log(triangle);
   } */
/* for(var row=1;row<=5;row++){
	for(var a=1;a<=5-row;a++){
		document.write("&nbsp");
	}
	for(var star=1;star<=2*row-1;star++){
		document.write("*")
	}
	document.write("<br/>");
}
  */
/*百钱买百鸡  */
			for(var cockNum = 0; cockNum<= 19; cockNum++){
				for(var henNum = 0; henNum <= 33; henNum++){
					var poultNum = 100 - cockNum - henNum;
					if((cockNum * 5 + henNum * 3 + poultNum * (1/3) === 100) && poultNum % 3 === 0){
						console.log("可买公鸡只数:" + cockNum);
						console.log("可买鸡母只数:" + henNum);
						console.log("可买鸡雏只数:" + poultNum);
					}
				}
			}
  		</script>
 	</body>
</html>


 
</script>
</head>
<body>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值