JavaScript 函数

目录

前言

function 函数

格式

 实例

​编辑

​编辑

通过观察 function 函数的语法格式和实例 :是否会发现以下问题,并明白其中的原因呢?

1  发现 function 函数 是没有返回值类型,但可以使用return 来返回结果 

原因

2 使用function函数中,不管你是否传递参数,function函数中都不会显示参数类型

原因

 应用实例

问题

前置知识

代码如下

效果展示

匿名函数

格式

实例

应用场景

应用实例

问题 

代码如下

效果展示

箭头函数

格式

特点

1 如果函数没有参数,可以省略参数列表的圆括号 (),但如果有多个参数或没有参数但带有花括号 {} 的函数体,则不能省略圆括号:

2 如果只有一个参数 ,()可以省略

3如果函数体只有一个表达式,并且需要返回这个表达式的值,可以省略花括号 {} 和 return 关键字

应用实例

问题 

代码如下

函数就是对象

代码

发现

原因

1 可以参与赋值

2 有属性和方法

3 可以作为方法参数

理解

4 可以作为方法返回值

理解高阶函数和回调函数,闭包的概念

高阶函数,回调函数

举例理解:

闭包

函数可以访问自己作用域的变量



前言

上一篇博客:JavaScript 数据类型  介绍了数据类型分为两种: 基本类型,对象类型

本篇博客,详细介绍对象类型中关于函数的知识

function 函数

格式

function  函数名 (){

// 函数体(内容)

return  结果;
}

 实例

通过观察 function 函数的语法格式和实例 :是否会发现以下问题,并明白其中的原因呢?

1  发现 function 函数 是没有返回值类型,但可以使用return 来返回结果 

原因

在JavaScript中,函数本身并没有明确的“返回类型”声明,这与一些强类型语言(如Java、C++等)不同。在强类型语言中,函数在定义时需要明确指定其返回值的类型,而调用该函数时也期望得到特定类型的结果。

然而,在JavaScript这样的弱类型(或动态类型)语言中,函数的返回类型是由其返回值的实际内容来决定的。这意味着您可以在函数内部返回任何类型的数据,而无需在函数定义时声明返回类型。

实例

function getNumber() {  
    return 42; // 返回一个数字  
}  
  
function getString() {  
    return "Hello, world!"; // 返回一个字符串  
}  
  
function getObject() {  
    return { name: "Alice", age: 25 }; // 返回一个对象  
}

发现:在上面的例子中,每个函数都使用了return语句来返回不同类型的数据。调用这些函数时,您会得到与函数内部return语句指定的值相匹配的返回类型。

2 使用function函数中,不管你是否传递参数,function函数中都不会显示参数类型

原因

在JavaScript中,使用function关键字定义的函数在函数签名中不会显示参数的类型。这是因为JavaScript是一种动态类型语言,它不会在编译时检查变量或参数的类型。相反,类型检查(如果有的话)通常是在运行时进行的。

这意味着,当定义一个函数时,不需要指定参数的类型函数会接受传递给它的任何值,并在函数体内根据需要使用这些值。如果传递给函数的值类型与函数内部期望的类型不匹配,那么可能会导致运行时错误或不符合预期的行为。

实例

function add(a, b) {  
    return a + b;  
}  
  
console.log(add(1, 2));       // 输出: 3,因为两个参数都是数字  
console.log(add("1", "2"));   // 输出: "12",因为两个参数都是字符串,执行的是字符串拼接  
console.log(add(1, "2"));     // 输出: "12",因为第一个参数是数字,第二个参数是字符串,JavaScript会尝试将数字转换为字符串然后进行拼接

发现:在上面的例子中,add函数接受两个参数ab,并没有指定它们的类型。当传递不同类型的参数时,函数的行为会根据JavaScript的类型转换规则而变化。

 应用实例

问题

打开vscode ,使用function函数知识,当鼠标点击段落标签 (内容:请点击!), 时浏览器控制台打印 :今天你辛苦了!!

前置知识

document:整个网页对象

getElementById(): 根据属性id 获得元素。参数为希望获得的元素id值

onclick: 当你点击时,会调用onclick 右边的代码

具体含义onclick是一个事件处理器属性,它用于指定当元素被点击时要执行的JavaScript代码或函数。

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id="p1">请点击!</p>
    <script>
        document.getElementById("p1").onclick=function a(){
            console.log("今天,你辛苦了!!")
        }
    </script>
</body>
</html>

效果展示

匿名函数

格式

(function(参数){

//函数体

return 结果})

实例

注意:由于匿名函数没有函数名

应用场景

1 定义完毕,立即调用

实例

2 作为其他对象的方法

应用实例

问题 

打开vscode ,使用匿名函数知识,当鼠标点击段落标签 (内容:请点击!), 时浏览器控制台打印 :今天你辛苦了!!

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id="p1">请点击!</p>
    <script>
        document.getElementById("p1").onclick=(function (){
            console.log("今天,你辛苦了!!")
        })
    </script>
</body>
</html>

效果展示

箭头函数

格式

(参数)=>{

//函数体

return 结果 ;}

特点

如果函数没有参数,可以省略参数列表的圆括号 (),但如果有多个参数或没有参数但带有花括号 {} 的函数体,则不能省略圆括号:

代码展示

const functionName = () => {  
  // 函数体  
};  
  
const sum = (a, b) => a + b;

2 如果只有一个参数 ,()可以省略

代码展示

const square = x => x * x;  
console.log(square(5)); // 输出: 25

3如果函数体只有一个表达式,并且需要返回这个表达式的值,可以省略花括号 {} 和 return 关键字

代码展示

const functionName = (参数列表) => 表达式;

应用实例

问题 

打开vscode ,使用箭头知识,当鼠标点击段落标签 (内容:请点击!), 时浏览器控制台打印 :今天你辛苦了!!

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p id="p1">请点击!</p>
    <script>
        document.getElementById("p1").onclick= () =>
            console.log("今天,你辛苦了!!")
        
    </script>
</body>
</html>

函数就是对象

代码

  document.getElementById("p1").onclick=(function (){
            console.log("今天,你辛苦了!!")
        })

发现

onclick 事件处理器属性 右边 是通过赋值 运算符连接的,但我们知道函数(方法)本身是不能被赋值的 。可以被赋值的:变量,对象。在这里 

函数是被当作对象理解的

原因

1 可以参与赋值

上面已经了解了

2 有属性和方法

实例

通过 console.dir() 参数为 函数名  ,可以查看当前函数的 属性和方法

3 可以作为方法参数
function greet(callback) {  
  const name = "Alice";  
  callback(name);  
}  
  
function sayHello(name) {  
  console.log(`Hello, ${name}!`);  
}  
  
// 将 sayHello 函数作为参数传递给 greet 函数  
greet(sayHello);  
// 输出: Hello, Alice!
理解

在这个例子中,greet 函数接受一个名为 callback 的参数,这个参数是一个函数。在 greet 函数内部,我们调用了 callback 函数,并将一个字符串 name 作为参数传递给它。然后,我们将 sayHello 函数作为参数传递给 greet 函数。当 greet 被调用时,它内部实际调用了 sayHello 函数,并传递了 name 参数。

4 可以作为方法返回值

理解高阶函数和回调函数,闭包的概念

高阶函数,回调函数

举例理解:

假如存在两个函数 :函数a ,函数b

1 在函数a中,b函数作为a函数的对象参数传递

2 在函数a中 ,b函数作为a函数的 return 返回结果

这里就说 a函数 为高阶函数 ;b 函数为回调函数

闭包

函数可以访问自己作用域的变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值