发布于2021-06-20 18:59 阅读(550) 评论(0) 点赞(17) 收藏(4)
1、函数:可以实现某种特定功能的代码块
2、函数的使用:声明函数和调用函数
例:求n~m的累加和
function getSum(num1, num2) { //定义getSum()
var sum = 0;
for (var i = num1; i <= num2; i++) { sum += i; }
console.log(sum); // 函数执行结束后,将结果输出
}
getSum(1, 100); // 输出结果:5050 //调用getSum(
getSum(10, 50); // 输出结果:1230
3、定义函数
function 函数名([参数])
{
函数体语句
}
(1)function是一个关键字,全部小写
(2)函数名:是一个标识符,建议使用驼峰命名,做到见名知义
(3)函数可以有参数也可以没有参数,可以有多个参数,若有多个参数,参数之间用逗号分隔
(4)"{}"表示函数的控制范围,不能省略
(5)函数体语句可以有多条,建议一个函数只完成一个功能
内聚:模块内部结合的紧密程度
耦合:模块之间结合的紧密程度
4、调用函数
(1) 函数名([参数])
(2) 事件名 = 函数名([参数])
5、函数的参数:形参和实参
(1)形参(形式参数):在定义函数时出现在函数首部的参数,在定义函数时形参只是占位符,没有确定的值
(2)实参(实在参数):函数调用时出现在函数首部的参数,是实际的值
function 函数名(形参1, 形参2, …) { // 函数声明的小括号中的是形参
// 函数体代码
}
函数名(实参1, 实参2, …) // 函数调用的小括号中的是实参
(3)参数的传递方式:实参将数据传递给形参
(4)当形参的个数比实参的个数多时,函数不会报错,多出的形参会是undefined类型
(5)当实参的个数比形参的个数多时,多余的实参会被忽略
function getSum(num1, num2) {
console.log(num1, num2);
}
getSum(1, 2, 3); // 实参数量大于形参数量,输出结果:1 2
getSum(1); // 实参数量小于形参数量,输出结果:1 undefined
(6)实参向形参传递数据是单向的,形参的改变不会影响到实参
6、函数的返回值:是函数的处理结果。通过return语句返回
function 函数名() {
return 要返回的值; // 利用return返回一个值给调用者
}
7、函数的内置对象arguments的使用
当不确定函数中接收到了多少个实参的时候,可以用arguments来获取实参。这是因为arguments是当前函数的一个内置对象,所有函数都内置了一个arguments对象,该对象保存了函数调用时传递的所有的实参
function fn() {
console.log(arguments); // 输出结果:Arguments(3) [1, 2, 3, …]
console.log(arguments.length); // 输出结果:3
console.log(arguments[1]); // 输出结果:2
}
fn(1, 2, 3);
1、定义函数 判断输入的年份是否是闰年,调用该函数输出1500-2021间所有的闰年,要求每行输出十个年份
function fun(year){
console.log("你好")
if(year%100!=0 && year%4==0 || year%400==0){
return true;
}else{
return false;
}
}
var str = '';
var flag = 0;
for(var y = 1500;y <= 2021;y++){
if(fun(y)){
flag ++;
str += y + '\t';
}
if(flag == 10 ){
str += '\n';
flag = 0;
}
}
console.log(str);
2、定义函数,判断一个数是否是素数,调用该函数找到100以内的所有素数并输出
//定义函数
function fun(n){
for(var i = 2;i <= n;i++){
if(n % i == 0){
return false;
}
return true;
}
}
//调用函数
for(var j = 2;j <= 100;j++){
if(fun(j)){
console.log(j);
}
}
3、定义函数来算n的阶乘
function fun(n){
var s = 1;
for(var i = 1;i <= n;i++){
s = s * i;
}
// return s; //变量s的值就是fun函数的运算结果
}
//函数调用
var t = prompt("请输入要计算的数: ");
var s1 = fun(t);
console.log(t+"!="+s1);
4、编写一个fn()函数,该函数调用后会弹出一个输入框,要求用户输入一个年份,输入以后,程序会提示该年份的2月份有多少天
在这里插入代码片function fn() {
var year = prompt('请输入年份:');
if (isLeapYear(year)) { alert(‘当前年份是闰年,2月份有29天’); }
else { alert('当前年份是平年,2月份有28天'); }
}
function isLeapYear(year) {
// 将上一个案例中的isLeapYear()函数中的代码复制到此处
}
fn();
1、函数表达式:是将声明的函数赋值给一个变量,通过变量完成函数的调用和参数的传递,函数表达式的定义必须在调用前
var 变量名 = function([参数]){
函数体
}
2、回调函数:指的就是一个函数A作为参数传递给一个函数B,然后在B的函数体内调用函数A
<script>
var s1 = cal(15,16,fun1); //fun1为回调函数
console.log("s1="+s1);
var s2 = cal(15,16,fun2); //fun2为回调函数
console.log("s2="+s2);
var s3 = cal(3,5,function(a,b){ //回调函数的另一种写法,比较常用,在其他地方没有定义函数
return a / b; //在写参数的时候直接定义了函数内容
})
console.log("s3="+s3);
</script>
//回调函数的使用
function fun1(a,b){
return a + b;
}
function fun2(a,b){
return a * b;
}
function cal(m,n,fn){
return fn(m,n);
}
3、递归调用:指的是一个函数在其函数体内调用自身的过程,这种函数称为递归函数(自己调用自己)
(1)递归的使用前提
A、问题可以分解(即复杂的问题逐步分解成简单的问题)
B、分解得到的新问题的解法和原来老问题的解法是相同的
C、必须有明确的终止条件
(2)递归过程
A、自上而下分解问题
B、自下而上回溯得到问题的解
①使用递归函数计算1+2+3+…+100的值
function sum(n){
if(n == 1){
return 1;
}else{
n += sum(n - 1);
return n;
}
}
②使用递归函数,输出斐波拉契数列的前20项
function fib(n){
if(n == 1 ||n == 2){
return 1;
}else{
return fib(n - 1) + fib(n - 2);
}
}
var str = '';
for(var i = 1;i <= 20;i++){
str += fib(i) + '\t';
}
console.log(str);
1、作用域的分类:变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域
1、闭包函数:所谓“闭包”指的就是有权访问另一函数作用域内变量(局部变量)的函数
2、主要用途:
function fn() {
var times = 0;
var c = function () { return ++times; };
return c;
}
var count = fn(); // 保存fn()返回的函数,count就是一个闭包
console.log(count()); // 输出结果:1
console.log(count()); // 输出结果:2
console.log(count()); // 输出结果:3
2、预解析:JavaScript解析器在运行JavaScript代码的时候会进行预解析,也就是提前对代码中的var变量声明和function函数声明进行解析,然后再去执行其他的代码
// 输出结果:undefined
console.log(num) ;
var num = 10;
// 报错,提示num2 is not defined
console.log(num2) ;0
var预解析
var num ;
// undefined
console.log(num) ;
num = 10;
作者:哦八戒八戒
链接:http://www.qianduanheidong.com/blog/article/135983/0b85d7d294974aabb42e/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!