JavaScript|函数(含函数声明提升讲解)

本博文源于js基础,主要讲述函数这一章节,包括

引言

如果一次写成,随时可以调用,那就需要用到函数。

函数的定义和调用

函数的定义

这函数定义跟matlab类似,格式如下:

function 函数名(参数,参数....) {
	//函数体
}

函数的调用

		<script>
			function sum(a,b) {
				console.log(a+b);
				}
			sum(3,5);
		</script>

在这里插入图片描述
函数也可以做返回值return,例如

		<script>
			function isEven(n) {
				return n%2==0;
			}
			console.log(isEven(5));
		</script>

在这里插入图片描述

函数声明的提升

函数声明在预处理阶段会提升

		<script>
			fun();
			function fun() {
				alert("函数会被执行");
			}
		</script>

在这里插入图片描述
大家会看到函数先让他执行,再声明,结果不报错!这就叫做函数声明在预处理阶段会被提升。

函数表达式不会提升

如果上面的函数写进表达式里,它不会被提升的。
例如–写进表达式:

			fun();
			var fun = function fun() {
				alert("函数会被执行");
			}

在这里插入图片描述

外部js文件定义的函数不会提升

这个意思说,让我们先引用js文件,再使用文件里的函数,否则会报错
5-3.js

			function isEven(n) {
				return n%2==0;
			}

主html

		
		<script>
			console.log(isEven(5));
		</script>
		<script src="./5-3.js"></script>

在这里插入图片描述

变量作用域

这部分跟c类似,主要无非包括局部、全句、作用域链

局部变量

			function fn() {
				var a =1;
			}
			fn();
			console.log(a);

在这里插入图片描述
a的定义域仅仅在fn里,执行后,它就相当于没了,所以变量未定义。
口诀是:局部变量在局部有效,逃出之后没效果。

全局变量

全局只要放到代码最上面,任何地方都能使用他,除非特殊情况,不建议使用。

作用域链

函数嵌套函数

函数里面套函数,外部函数无法调用内部函数,比如这个:

			function fun() {
				inner();
				function inner() {
					console.log("你好");
				}
			}
			fun();

在这里插入图片描述
这个会正常运行,但我们如果调用inner()肯定不行的,看结果

			function fun() {
				inner();
				function inner() {
					console.log("你好");
				}
			}
			inner();

在这里插入图片描述

作用域链

记住口诀:定义重复,局部变量会屏蔽全局变量

递归

递归是一种思想,这个毋庸置疑,只需要体会。写出递归还得看代码实践能力

		<script>
			function factorial(n) {
				if(n==1) {
					return 1;
				}
				return n*factorial(n-1);
			}
			console.log(factorial(5));
		</script>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/106215765