欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 可复用代码块—”函数“——WEB开发系列49

可复用代码块—”函数“——WEB开发系列49

2024/10/24 5:21:07 来源:https://blog.csdn.net/LEECOO666/article/details/143076757  浏览:    关键词:可复用代码块—”函数“——WEB开发系列49

JavaScript 中,函数构成了另一个核心概念。它们允许开发者将执行特定任务的代码封装成一个独立的代码块,这样就可以在任何需要的时候通过简单的指令来执行这段代码,从而避免了重复编写相同的代码段。


什么是函数?

函数是一个代码块,它可以执行特定的任务。在 JavaScript 中,函数通常通过关键字 ​​function​​ 来定义,包含在一对大括号 ​​{}​​​ 中。

函数的基本语法

以下是一个定义和调用函数的示例:

// 定义一个简单的函数
function greet(name) {return "Hello, " + name + "!";
}// 调用函数
console.log(greet("Alice")); // 输出: Hello, Alice!

示例中,​​greet​​ 函数接受一个参数 ​​name​​,并返回一个字符串。在调用这个函数时,我们传入了参数 ​​"Alice"​​。


可以在哪找到函数?

JavaScript 中,函数无处不在,在编写代码的每个部分都能找到函数的身影。函数不仅可以由开发者自定义,也有很多内置函数可供我们使用。浏览器环境中提供了许多内置函数,能够帮助我们处理字符串、数组等常见操作。

1. 字符串函数

例如,字符串的 ​​.toUpperCase()​​ 和 ​​.substring()​​​ 方法:

let str = "hello world";// 将字符串转换为大写
console.log(str.toUpperCase()); // 输出: HELLO WORLD// 获取子字符串
console.log(str.substring(0, 5)); // 输出: hello

2. 数组函数

JavaScript 数组提供了一系列内置方法,如 ​​.push()​​, ​​.pop()​​, 和 ​​.map()​​:

let arr = [1, 2, 3];// 添加元素到数组末尾
arr.push(4);
console.log(arr); // 输出: [1, 2, 3, 4]// 删除数组末尾的元素
arr.pop();
console.log(arr); // 输出: [1, 2, 3]// 使用 map 方法创建一个新数组
let doubled = arr.map(num => num * 2);
console.log(doubled); // 输出: [2, 4, 6]

3. 生成随机数

使用 ​​Math.random()​​​ 函数可以生成 0 到 1 之间的随机数:

let randomNum = Math.random();
console.log(randomNum); // 输出: 0.123456789 ...

函数与方法

函数与方法有很大的相似性,方法是附加在对象上的函数。我们可以将对象视为拥有自己属性和方法的容器。

以下是一个简单的示例:

let person = {name: "Alice",greet: function() {return "Hello, " + this.name + "!";}
};// 调用方法
console.log(person.greet()); // 输出: Hello, Alice!

​greet​​ 是 ​​person​​​ 对象的一个方法,它可以访问对象的属性。


调用函数

直接调用

函数可以通过其名称直接调用,也可以传递参数:

function add(a, b) {return a + b;
}console.log(add(2, 3)); // 输出: 5

​call​​ 和 ​​apply​​ 方法

JavaScript 还提供了 ​​call​​ 和 ​​apply​​ 方法来调用函数,并显式设置 ​​this​​​ 的值:

function showThis() {console.log(this);
}let obj = { value: 42 };showThis.call(obj); // 输出: { value: 42 }
showThis.apply(obj); // 输出: { value: 42 }

函数参数

可选参数

JavaScript 中,函数参数是可选的。即使我们没有传递参数,函数仍然可以执行:

function greet(name = "Guest") {return "Hello, " + name + "!";
}console.log(greet()); // 输出: Hello, Guest!

默认参数

我们可以为函数参数设置默认值,以防调用时未提供参数:

function multiply(a, b = 1) {return a * b;
}console.log(multiply(5)); // 输出: 5
console.log(multiply(5, 2)); // 输出: 10

匿名函数和箭头函数

匿名函数是没有名称的函数,常用于回调函数中:

setTimeout(function() {console.log("This is an anonymous function!");
}, 1000);

箭头函数

箭头函数是一种更简洁的函数表示法,使用 ​​=>​​ 语法。它在许多情况下可以使代码更简洁:

const add = (a, b) => a + b;console.log(add(2, 3)); // 输出: 5

箭头函数实时示例

箭头函数也可以用于更复杂的操作,例如数组的过滤和映射:

let numbers = [1, 2, 3, 4, 5];// 使用箭头函数过滤偶数
let evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // 输出: [2, 4]

函数作用域和冲突

函数作用域是指在函数中定义的变量的可访问范围。JavaScript 中有全局作用域和局部作用域:

局部作用域

当我们在函数内部定义变量时,它们只能在这个函数内部访问:

function myFunction() {let localVar = "I'm local!";console.log(localVar); // 输出: I'm local!
}myFunction();
// console.log(localVar); // 会抛出 ReferenceError: localVar is not defined

全局作用域

全局变量可以在任何地方访问:

let globalVar = "I'm global!";function anotherFunction() {console.log(globalVar); // 输出: I'm global!
}anotherFunction();

变量冲突

当我们在内层函数中定义了与外层函数同名的变量时,会发生变量冲突:

let v = "I'm global!";function scopeTest() {let v = "I'm local!";console.log(v); // 输出: I'm local!
}scopeTest();
console.log(v); // 输出: I'm global!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com