1.函数
2.其他知识点
- 逻辑中断
- 转换为布尔型
一.函数
1.函数的基本使用
2.函数的参数
3.函数返回值
4.作用域
5.匿名函数
1.1 函数的基本使用
① 函数:function 被设计为执行特定任务的代码块
② 说明:函数可以把具有相同或逻辑相似的代码包裹起来,通过函数调用执行这些被包裹的代码逻辑,这么做的优势是代码精简方便复用
③ 函数的声明语法
javascript
function 函数名() {
函数体
}
④ 函数名命名规范
- 和变量名基本一致
- 尽量小驼峰式命名法
- 前缀应该为动词
- 命名建议:常用动词约定
⑤ 函数的调用语法
- 函数名()
javascript
function sayHi () {
console.log("hihi~~~")
}
sayHi()
1.2 函数的参数
① 调用函数的时候需要传入数据,就要给函数传参,可以极大提高函数的灵活性
② function 函数名 (参数列表) {
函数体
}
③ 参数列表
- 传入数据列表
- 声明这个函数需要传入几个数据
- 多个数据用逗号隔开
javascript
function getSum (start, end) { // 形参
let sum = 0
for (let i = start; i <= end; i++) {
sum += i
}
console.log(sum)
}
getSum(1, 100) // 实参
④ 形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)
形参可以理解为:在这个函数内声明的变量,实参是给这个变量赋值,开发中尽量保持形参和实参个数一致
⑤ 参数默认值: 默认值只有在缺少实参参数传递的时候才会被执行,所有有参数会优先执行传递过来的实参,否则默认为undefined
javascript
function getSum (m = 0, n = 0) {
let sum = 0
for (let i = m; i <= n; i++) {
sum += i
}
console.log(sum)
}
getSum()
1.3 函数的返回值
① 当调用某个函数,函数会返回一个结果出来,就是一个有返回值的函数
② 有些函数有返回值,有些函数没有返回值,要根据需求不同,来设定需不需要返回值
③ 语法: return 数据
④ 细节:
- 在函数体中使用return 关键字能将内部的执行结果交给函数外部使用
- return 后面的代码不会再被执行,会立即结束当前函数,所以return后面的数据不要换行写
- return函数可以没有return, 这种情况函数默认返回值为undefined
- 两个相同的函数后面的会覆盖前面的函数
- 在JavaScript中实参的个数和形参的个数可以不一致
- 如果形参过多,会自动填上undefined
- 如果实参过多,多余的实参会被忽略
1.4 作用域
① 概念:一段代码程序中所用到的名字并不总是有效可用的,而限定这个名字的可用性代码范围就是这个名字的作用域
② 作用:作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突
③ 分类:
- 全局作用域:全局有效
作用于所有代码执行的环境或者一个独立的js文件
- 局部作用域:局部有效
作用于函数内的代码环境,就是局部作用域,因为跟函数有关,所以也被称为函数作用域
④ 全局变量和局部变量
- 全局变量:函数外部let的变量,全局变量在任何区域都可以访问和修改
- 局部变量:函数内部let的变量,局部变量只能在当前函数内部访问和修改
- 函数内部的形参可以看作是局部变量
特殊情况:如果函数内部,变量没有声明,直接赋值,也被当做全局变量,但是不推荐
⑤ 变量的访问规则
- 只要是代码,就至少有一个作用域
- 写在函数内部的为局部作用域
- 如果函数中还有函数,那么在这个作用域中又可以诞生一个作用域
- 在能够访问的情况下,先局部,局部没有再找全局
1.5 匿名函数
① 函数分为两大来:
- 具名函数
声明:function fn() {}
调用:fn()
- 匿名函数
function() { }
② 匿名函数
概念:没有名字的函数,无法直接使用
使用方式: 函数表达式 立即执行函数
③ 函数表达式
- 概念:将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式
- 语法
let fn = function() {
// 函数体
}
javascript
let fn = function (x, y) {
console.log(x + y)
}
fn(1, 2)
- 函数表达式与具名函数的不同:
1.具名函数的调用可以写到任何位置
2.函数表达式必须先声明表达式,后调用
④ 立即执行函数
场景:避免全局变量之间的污染, 保存后立即执行,必须加分号执行
语法:
javascript
// 第一种写法
(function (x, y) {
console.log(x + y)
})(1, 2);
// 第二种写法
(function (x, y) {
console.log(x + y)
}(1, 3));
二. 其他知识点
2.1 逻辑中断
概念:逻辑运算符中的短路
短路:只存在于&&和||中,当满足一定条件会让右边代码不执行
原因:通过左边能得到整个式子的结果,因此没必要再判断右边
|------|-------------|
| 符号 | 短路条件 |
| && | 左边为false就短路 |
| || | 左边为true就短路 |
javascript
function getSum (x, y) {
// 类似于默认值,逻辑中断
x = x || 0
y = y || 0
console.log(x + y)
}
getSum(1, 2)
2.2 转换为boolean型
Boolean(内容)
0 undefined null false NaN转换为布尔值之后都是false, 其余都为true