JS函数

函数

函数的声明
	function  函数名(参数) {  函数体   }
	var 函数名 = function(参数) {  函数体  }
函数的调用
	函数名();
函数参数
	参数的作用
		是让调用者传递数据给函数
		谁传递参数
			调用者
		谁接收参数
			函数接
		传参的本质
			实参给形参赋值
	形参
		形式参数, 是在函数内部声明一个变量,  必须省略var
		可以是多个
	实参
		实参的个数  可以不用和形参一致
		实参是按照形参的顺序进行赋值
返回值
	return 关键字
		终止函数体的执行, 给调用者返回函数体执行的结果
		如果没有return , 或者return 后面没接具体值,  函数返回值为undefined
		如果接了值, 那么就返回该值
	函数分类
		无参数无返回值
			只是单纯执行一段代码   没意义
		有参数无返回值
		无参数有返回值
		有参数有返回值
			用的最多
作用域
	全局作用域
		全局变量
			就是可以在全局作用域范围内起作用的变量
			在任何地方都可以起作用
	局部作用域(函数作用域)
		函数可以用来划分作用域
		函数内部声明的变量就是局部变量, 只能在函数内部起作用
	块级作用域
		ES6中的let和const来实现块级作用域
		js中所有的代码块都可以分割作用域 (代码块  指的是 带有大括号的  函数    if分支结构  循环结构等)
		let
			let 在同一块级作用域内不能重新声明  但是可以重新赋值
			var有变量提升,  let没有变量提升
			let 有暂时性死区的特性   ( 使用let声明的变量   在声明前不能使用  否则就会报错 )
			let 声明的变量  只在所处的块级作用域内有效
		const
			是用来声明常量   不能重新声明  也不能重新赋值
 作用域链是怎么来的 ?
     我们默认js代码都处于全局作用域中, 当我们声明一个函数之后,  这个函数就分割出了一个局部作用域,  然后我在这个函数的函数体里面
     再声明一个函数,  又会开辟出新的局部作用域, 以此类推, 就形成了一个嵌套多层的作用域链
 作用域链的访问规则 : 就近原则  先从本级作用域查找, 找不到依次往上找, 找到顶级作用域还没有,  就会报错

练习

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		function area(R){
			return (Math.PI*Math.pow(R,2)).toFixed(2);
		}

		for(var i=0;i<101;i++){
			// console.log("半径为"+i+"的圆的面积为:"+area(i));
		}
		
		function maxvalue(m,n){
			if (m<n) {
				return n;
			}else{
				return m;
			}
		}

		// console.log(maxvalue(6,8));
		
		function maxarray(arr){
			var max=-Infinity;
			for(var i=0;i<arr.length;i++){
				if(max<arr[i]){
					max=arr[i];
				}
			}
			return max;
		}

		// console.log(maxarray([15,24,658,87,1,56,4856,156,48,6]));

		function maxnum(num1,num2,num3){
			var arr=[num1,num2,num3];
			return maxarray(arr);
		}

		console.log(maxnum(88,96,54));
	</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		function sum(num1,num2){
			return num1+num2;
		}

		function merchant(num1,num2){
			return num1/num2;
		}

		function difference(num1,num2){
			return num1-num2;
		}

		function product(num1,num2){
			return num1*num2;
		}
		console.log(sum(1,2),merchant(4,2),difference(5,1),product(6,6));

		function maxnum(num1,num2,num3){
			var res1 = num1>num2?num1:num2;
			return res1>num3?res1:num3;
		}
		console.log(maxnum(56,95,86));

		function sortnum(num1,num2,num3){
			var arr=[num1,num2,num3];
			for(var i=0;i<arr.length;i++){
				for(var j=0;j<arr.length-i-1;j++){
					if(arr[j]>arr[j+1]){
						[arr[j],arr[j+1]]=[arr[j+1],arr[j]];
					}
				}
			}
			return arr;
		}
		console.log(sortnum(56,95,86));
	</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<script>
		//1
		function  contrary(arr){
			for(var i=0;i<arr.length/2;i++){
				[arr[i],arr[arr.length-1-i]]=[arr[arr.length-1-i],arr[i]];
			}
			return arr;
		}

		// var arr=[10,20,30,40,50];
		// console.log(contrary(arr));
		
		//2
		function sortarr(arr,sort){
			for(var i=0;i<arr.length;i++){
				for(var j=0;j<arr.length-1-i;j++){
					if (arr[j]>arr[j+1]) {
						[arr[j],arr[j+1]]=[arr[j+1],arr[j]];
					}
				}
			}
			if (sort) {
				return arr;
			}else{
				return contrary(arr);
			}
		}


		// var arr=[40,30,50,10,20];
		// console.log(sortarr(arr,true)); //true 从小到大 false 从大到小
		
		//3
		function isLeapyear(year){
			return year % 400 ==0 || (year % 100 != 0 && year % 4 == 0);
		}

		// console.log(isLeapyear(2019),isLeapyear(1900),isLeapyear(2020),isLeapyear(3028));
		
		//4
		function judgeday(year,month,day){
			return (month-1)*31+day-(month>4)-(month>6)-(month>9)-(month>11)-3*(month>2)+(month>2 && (isLeapyear(year)));
		}

		// console.log(judgeday(2020,12,31));
		
		//4
		function randomcolor(){
			var color = "#";
			for(var i=0;i<6;i++){
				color += Math.floor(Math.random()*16).toString(16);
			}
			return color;
		}

		// console.log(randomcolor());
	</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值