大家好我是来自CSDN的前端寄术区博主PleaSure乐事,今天我们继续有关JavaScript的学习,使用的编译器为vscode,浏览器为谷歌浏览器。
函数的声明与使用
声明
在JavaScript当中函数的声明和其他语言类似,使用如下格式即可声明:function 函数名(){函数体},具体例子如下:
<script>function bubbleSort(arr) { let n = arr.length; for (let i = 0; i < n - 1; i++) { for (let j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) {let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; }
</script>
使用
我们声明完函数,就需要对他进行调用,调用方法与Java等类似,使用函数名+要传入的参数就可以。但是需要注意,如果没有需要传入的参数,如下面的函数,就需要加上括号才会被调用:
<script>function test() {console.log('test');}test();
</script>
函数命名规范
函数的命名规范与变量命名规则基本一致,使用驼峰命名法。在声明中,前缀尽量使用动词方便判断作用,比如:
- can判断是否可以执行
- has判断是否含有某个值
- is判断是否是某个值
- get获取某个值
- set设置某个值
- load加载一些数据
函数的传参
基本概念
函数的参数传入可以分为单个和多个,多个数据之间需要用逗号隔开,且参数需要在声明函数时就声明,写在函数名后的括号内。传参的格式如下:
<script>let a = 1;let b = 2;//没有参数function test() {console.log('test');}test();//一个参数function test1(a) {console.log(a * a);}test1(a);//多个参数function test2(a, b) {console.log(a * b);}test2(a, b);
</script>
可以「设定函数的默认值」防止未对函数传参的情况,比如可以对参数设置默认值都为0的条件,若传入参数则用传入的参数,如果没有传入则使用默认值,即存在「优先级问题」 注意传入数组时可以设置空数组防止报错。
<script>function test(a = 0, b = 0) {console.log(a * b);}test();test(1,2);
</script>
在JavaScript当中,我们也需要注意形参和实参的区别。
形参与实参
定义
在函数定义时列出的参数称为形式参数。它们是函数内部用于接收传入数据的变量。形参只在函数体内部有效,在函数被调用时创建,并在函数执行完毕后被销毁。形参用于在函数内部存储传递给函数的数据,使函数能够对这些数据进行处理。
在函数调用时传递给函数的参数称为实际参数。它们是函数调用时提供的具体值或变量。实参可以是全局变量、局部变量或表达式的值,其作用域和存在时间由它们在函数调用之外的定义决定,在函数调用之前就已经存在,并在函数调用过程中被传递给函数。函数调用结束后,实参仍然存在。
区别
简单来讲,形参与实参的主要区别就是他们的创建时间与作用域不同,且在函数调用时实参的值会被传给形参。在如下例子当中,a和b就是形参,3和4就是实参:
<script>function sum(a, b) { return a + b; }var result = sum(3, 4); console.log(result);
</script>
函数的返回值
调用某个函数会返回一个值,直接return + 数据即可返回数据,但是需要接收相关数据才行。但是需要注意的是return语句后面的代码不会被执行,需要有返回值的函数可以没有return,但是这样的话会默认返回undefined。如下就是一个需要有返回值但是没有return函数,导致出现undefined的例子:
<script>function sum(a, b) { a += b }var result = sum(3, 4); console.log(result);
</script>
作用域
函数的使用需要注意作用域,即局部变量和全局变量的使用,for循环,while循环等也一样。在函数内部如果未声明变量,那么该变量也当作全局变量来看,但是这种情况一般是不被允许的。
函数内部的形参可以当作局部变量来看,变量的访问原则:在能够访问到的情况下就一定先局部再全局 只要是符合规范的代码,变量就一定有作用域。
匿名函数
匿名函数是没有名字的函数,无法直接使用。
使用方法
函数表达式
该方法是将匿名函数赋值给一个变量,并通过改变量名进行调用。例如:
<script>let fn = function(){}
</script>
立即执行函数
立即执行函数的使用场景是避免全局变量之间的污染/相互影响。其语法如下:
方法一
(function(){函数体})(); 需要添加逗号否则可能会被误认为函数没结束 这里面也可以传入参数。样例如下:
<script>(function(x,y){doucment.write(x+y)})(1,2);
</script>
方法二
(function(){函数体}()); 同样可以传入参数。样例如下:
<script>(function(x,y){console.log(x-y)}(1,2));
</script>
总结
今天主要写了有关函数的有关知识点,并且写了一种比较快速便利的函数——匿名函数。希望对大家有所帮助,如果对您有帮助,希望您可以留下点赞与关注,这对我真的很重要,非常感谢!也希望我能与您共同进步!