JavaScript基础之函数与作用域 | 青训营笔记

简介: JavaScript基础之函数与作用域 | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第3天


1、函数

函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。


1.1、函数的使用

函数在使用时分为两步:声明函数和调用函数

①声明函数 //声明函数 function 函数名(){ //函数体代码 }

function 是声明函数的关键字,必须小写 由于函数一般是为了实现某个功能才定义的, 所以通常我们将函数名命名为动词,比如 getSum ②调用函数 //调用函数 函数名(); //通过调用函数名来执行函数体代码

调用的时候千万不要忘记添加小括号 口诀:函数不调用,自己不执行 注意:声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码。


1.2、函数的封装

函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口


1.3、函数的参数

1.3.1、形参和实参 在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参。

// 带参数的函数声明 function 函数名(形参1, 形参2 , 形参3...) { // 可以定义任意多的参数,用逗号分隔 // 函数体 }

// 带参数的函数调用 函数名(实参1, 实参2, 实参3...);

例如:利用函数求任意两个数的和

// 声明函数 function getSum(num1,num2){ console.log(num1+num2) }

// 调用函数 getSum(1,3) //4 getSum(6,5) //11

函数调用的时候实参值是传递给形参的

形参简单理解为:不用声明的变量

实参和形参的多个参数之间用逗号(,)分隔,

1.3.2、形参和实参个数不匹配

参数个数 说明 实参个数等于形参个数 输出正确结果

实参个数多于形参个数 只取到形参的个数

实参个数小于形参个数 多的形参定义为undefined,结果为NaN


function sum(num1, num2) { 
console.log(num1 + num2); 
} 
sum(100, 200); // 300,形参和实参个数相等,输出正确结果
sum(100, 400, 500, 700); // 500,实参个数多于形参,只取到形参的个数
sum(200); // 实参个数少于形参,多的形参定义为undefined,结果为NaN


注意:在JavaScript中,形参的默认值是undefined

1.3.3、小结 函数可以带参数也可以不带参数 声明函数的时候,函数名括号里面的是形参,形参的默认值为 undefined 调用函数的时候,函数名括号里面的是实参 多个参数中间用逗号分隔 形参的个数可以和实参个数不匹配,但是结果不可预计,我们尽量要匹配


1.4、函数的返回值

1.4.1、return语句 有的时候,我们会希望函数将值返回给调用者,此时通过使用 return 语句就可以实现。

return 语句的语法格式如下:

// 声明函数 function 函数名()

{ ... return 需要返回的值; }

// 调用函数 函数名(); // 此时调用函数就可以得到函数体内return 后面的值

在使用 return 语句时,函数会停止执行,并返回指定的值

如果函数没有 return ,返回的值是 undefined

// 声明函数 function sum(){ ... return 666; }

// 调用函数 sum(); // 此时 sum 的值就等于666,因为 return 语句会把自身后面的值返回给调用者

1.4.2、return 终止函数 return 语句之后的代码不被执行


function add(num1,num2){ 
//函数体 
return num1 + num2; // 注意:return 后的代码不执行 
alert('我不会被执行,因为前面有 return');
} 
var resNum = add(21,6); // 调用函数,传入两个实参,并通过 resNum 接收函数返回值 alert(resNum); // 27


1.4.3、return 的返回值 return 只能返回一个值。如果用逗号隔开多个值,以最后一个为准


function add(num1,num2){ 
//函数体 
return num1,num2; 
} 
var resNum = add(21,6); // 调用函数,传入两个实参,并通过 resNum 接收函数返回值 alert(resNum); // 6


1.4.4、小结 函数都是有返回值的

如果有 return ,则返回 return 后面的值 如果没有 return,则返回 undefined

1.4.5、区别 break、continue、return 的区别

break : 结束当前循环体(如 for、while)

continue :跳出本次循环,继续执行下次循环(如for、while)

return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码\



相关文章
|
13天前
|
JavaScript 前端开发
js的作用域作用域链
【10月更文挑战第29天】理解JavaScript的作用域和作用域链对于正确理解变量的访问和生命周期、避免变量命名冲突以及编写高质量的JavaScript代码都具有重要意义。在实际开发中,需要合理地利用作用域和作用域链来组织代码结构,提高代码的可读性和可维护性。
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
38 0
|
12天前
|
自然语言处理 JavaScript 前端开发
[JS]作用域的“生产者”——词法作用域
本文介绍了JavaScript中的作用域模型与作用域,包括词法作用域和动态作用域的区别,以及全局作用域、函数作用域和块级作用域的特点。通过具体示例详细解析了变量提升、块级作用域中的暂时性死区等问题,并探讨了如何在循环中使用`var`和`let`的不同效果。最后,介绍了两种可以“欺骗”词法作用域的方法:`eval(str)`和`with(obj)`。文章结合了多位博主的总结,帮助读者更快速、便捷地掌握这些知识点。
27 2
[JS]作用域的“生产者”——词法作用域
|
13天前
|
JavaScript 前端开发 Java
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
本文介绍了JavaScript中常用的函数和方法,包括通用函数、Global对象函数以及数组相关函数。详细列出了每个函数的参数、返回值及使用说明,并提供了示例代码。文章强调了函数的学习应结合源码和实践,适合JavaScript初学者和进阶开发者参考。
25 2
[JS]同事:这次就算了,下班回去赶紧补补内置函数,再犯肯定被主管骂
|
14天前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
|
13天前
|
JavaScript 前端开发
如何在 JavaScript 中实现块级作用域?
【10月更文挑战第29天】通过使用 `let`、`const` 关键字、立即执行函数表达式以及模块模式等方法,可以在JavaScript中有效地实现块级作用域,更好地控制变量的生命周期和访问权限,提高代码的可维护性和可读性。
|
21天前
|
JavaScript 前端开发
javascript的作用域
【10月更文挑战第19天javascript的作用域
|
12天前
|
前端开发 JavaScript 开发者
除了 Generator 函数,还有哪些 JavaScript 异步编程解决方案?
【10月更文挑战第30天】开发者可以根据具体的项目情况选择合适的方式来处理异步操作,以实现高效、可读和易于维护的代码。
|
13天前
|
自然语言处理 JavaScript 前端开发
[JS]同事看了我做的this笔记,直摇头,坦言:我还是参考启发博文吧
本文介绍了JavaScript中`this`关键字的重要性和使用规则。作者回顾了早期笔记,总结了`this`指向的各种情况,并分享了最新的理解。文章强调了`this`在不同上下文中的指向,包括对象方法、全局函数、箭头函数等,并提供了改变`this`指向的方法。适合JavaScript开发者参考。
30 2
|
26天前
|
JavaScript 前端开发
JavaScript 作用域
JavaScript 作用域是指程序中可访问的变量、对象和函数的集合。它分为函数作用域和局部作用域。函数作用域内的变量仅在函数内部可见,而全局作用域的变量在整个网页中均可访问。局部变量在函数执行完毕后会被销毁,而全局变量则在整个脚本生命周期中都存在。未使用 `var` 关键字声明的变量默认为全局变量。