JavaScript基础 第四天

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

相关推荐
Code哈哈笑7 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
joan_8510 分钟前
layui表格templet图片渲染--模板字符串和字符串拼接
前端·javascript·layui
程序猿进阶10 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
qq_4336184413 分钟前
shell 编程(二)
开发语言·bash·shell
charlie11451419127 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满27 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
还是大剑师兰特33 分钟前
什么是尾调用,使用尾调用有什么好处?
javascript·大剑师·尾调用
ELI_He99934 分钟前
PHP中替换某个包或某个类
开发语言·php
m0_7482361141 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
倔强的石头1061 小时前
【C++指南】类和对象(九):内部类
开发语言·c++