javascript学习笔记(四)function函数部分

下面是JavaScript学习笔记(四)Function函数部分的完整攻略。

一、函数的定义

JavaScript中的函数使用function关键字来定义,函数中的代码块可以在任何时间被调用多次。函数可以带着参数来进行运算,也可以返回值(有时不返回值,而是引起副作用)。

1. 基本语法

function functionName(parameters){
  // 函数执行的代码
  return returnValue;
}
  • functionName: 函数名,变量名规则适用。
  • parameters:参数列表,用逗号分隔多个参数。
  • returnValue:函数的返回值,在函数里使用return语句返回。

2. 示例

function add(x, y){
  return x + y;
}

var result = add(2, 3);
console.log(result); // 输出 5

二、函数的参数

1. 默认参数

默认参数用于在没有传递值或传递undefined时使用默认值。

function add(x = 0, y = 0) {
  return x + y;
}

console.log(add()); // 0
console.log(add(1)); // 1
console.log(add(1, 2)); // 3

2. 不定参数

在ES6中,我们可以使用不定参数来接收不确定数量的实参。语法如下:

function sum(...numbers) {
  let total = 0;
  for(let number of numbers){
    total += number;
  }
  return total;
}

console.log(sum(1, 2, 3)); // 6
console.log(sum(4, 5, 6, 7)); // 22

三、函数的调用方式

JavaScript中的函数调用方式有4种。

1. 函数式调用

这种方式我们最常用到,即直接调用函数。

function add(x, y) {
  return x + y;
}

console.log(add(1, 2)); // 输出3

2. 方法式调用

我们可以使用对象调用方法,这时函数中的this关键字指向该对象。

let obj = {
  x : 1,
  y : 2,
  add: function(){
    return this.x + this.y;
  }
};

console.log(obj.add()); // 输出3

3. 构造函数模式调用

使用new操作符和构造函数来创建一个新对象,通过this关键字来设置属性。

function Person(name, age) {
  this.name = name;
  this.age = age;
 }

let person = new Person('张三', 24);
console.log(person.name, person.age); // 输出张三 24

4. apply/call调用

我们可以使用apply和call方法来改变函数的this指向:

function add(x, y){
   return x + y;
}

console.log(add.apply(null, [1, 2])); // 输出3
console.log(add.call(null, 1, 2)); // 输出3

apply的第一个参数是改变后的this值,第二个参数是一个数组,其中的元素将作为参数传递给函数。

call的使用方式和apply类似,不同的是call的形参需要一个一个传递,而apply可以使用数组。

四、函数的作用域

作用域是指变量的可见范围,它决定了部分代码可以访问哪些变量。JavaScript有两种主要的作用域:全局作用域和函数作用域。

1. 全局作用域

在所有函数以外定义的变量拥有全局作用域,即在脚本的任何位置可被调用。

var name = "张三"; // 全局作用域

function greetings() {
  console.log('您好,' + name);
}

greetings(); // 输出您好,张三

2. 函数作用域

函数作用域简单来说就是指由变量声明在函数内,仅在函数内部可见。

function greetings(name) {
  var message = '您好,' + name; // 函数作用域(局部作用域)
  console.log(message);
}

greetings('张三'); // 输出您好,张三
// console.log(message); // 抛出 "ReferenceError"

3. 块级作用域

在ES6中,我们可以使用let和const关键字,通过将变量声明位于块级作用域中。

if (true) {
  let name = '张三';
  console.log(name); // 输出张三
}
// console.log(name); // 抛出 "ReferenceError"

五、函数的返回值

1. 返回值类型

一个函数可以返回一个值,或者不返回值(undefined)。

function add(x, y) {
  return x + y;
}
console.log(add(2, 3)); // 输出5

function welcome(name) {
  console.log('您好,' + name);
}
console.log(welcome('张三')); // 输出undefined

2. 返回多个值

在JavaScript中,函数只能返回一个值,但是我们可以使用数组或对象的方式返回多个值。

function getPerson() {
  return {
    name: '张三',
    age: 24,
  };
}
console.log(getPerson()); // 输出 { name: '张三', age:24 }

六、总结

上述内容是JavaScript学习笔记(四)的Function函数部分的完整攻略,涵盖了函数的定义、参数、调用方式、作用域和返回值,其中还提供了不少示例。掌握这些内容可以帮助你更好地使用JavaScript中的函数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript学习笔记(四)function函数部分 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS计算网页停留时间代码

    JS计算网页停留时间代码可以帮助网页作者分析读者在该网页上的停留时间,进而提高网站的口碑和用户粘度。以下是JS计算网页停留时间代码的完整攻略。 1. 标准浏览器方法 要实现JS计算网页停留时间的代码,可以使用标准的浏览器方法。具体实现方法如下: 在网页中添加以下代码: <script> var timeStart=0, timeEnd=0, ti…

    JavaScript 2023年5月27日
    00
  • JavaScript常见事件对象与操作实例总结

    JavaScript常见事件对象与操作实例总结 JavaScript中有很多事件,常见的事件有鼠标事件、键盘事件、表单事件等,而这些事件产生时候都会生成相应的事件对象,开发者可以通过事件对象去获取事件的信息,进行事件处理。 常见事件对象属性 以下是常见事件对象的属性: event.target: 触发事件的 DOM 元素。 event.currentTarg…

    JavaScript 2023年5月27日
    00
  • 浅析webpack 如何优雅的使用tree-shaking(摇树优化)

    浅析Webpack如何优雅的使用Tree-Shaking(摇树优化) 什么是Tree-Shaking Tree-Shaking(摇树优化)是指Webpack会把所有引入的模块融合为一个文件,然后去除掉其中未被使用的代码,生成的文件只包含实际需要用到的代码块。这种优化技术可以有效地减少打包出来的文件大小,从而提高网页的加载速度。 如何使用Tree-Shakin…

    JavaScript 2023年6月11日
    00
  • 一个非常不错的一个正则练习JS版

    下面提供详细的攻略: 什么是正则表达式 正则表达式是一种字符串匹配模式,用于检索、替换和提取字符串中的文本。它可以用特定的语法编写,可以匹配字符串的某些模式,具有处理字符串高级功能的能力。 正则表达式语法 正则表达式语法包括元字符、修饰符和括号。 元字符 元字符是一些特殊字符,它们在正则表达式中具有特殊含义。这些字符可以用来匹配或定位特定的内容或位置,如下表…

    JavaScript 2023年6月10日
    00
  • 深入分析Javascript跨域问题

    深入分析Javascript跨域问题 在Web开发中,跨域请求通常是一个必须要解决的问题。在本文中,我们将从什么是跨域、跨域的原因、常见的跨域实现以及如何解决跨域问题等方面进行深入分析。 什么是跨域? 在 Web 开发中,跨域是指从一个源(协议 + 域名 + 端口)访问另一个源下的资源。例如,从 http://example.com 页面发起的请求访问 ht…

    JavaScript 2023年5月27日
    00
  • JavaScript变量声明var,let.const及区别浅析

    JavaScript变量声明var,let,const及区别浅析 在JavaScript中,我们可以使用 var,let 和 const 关键字来声明变量,但这些关键字的用法和区别是比较容易混淆的。本文将对这三种关键字进行详细讲解。 var 在ES6之前,JavaScript中只有 var 这一个声明变量的关键字。var 关键字声明的变量作用域是函数级别的。…

    JavaScript 2023年6月10日
    00
  • javascript静态页面传值的三种方法分享

    以下是“javascript静态页面传值的三种方法分享”的完整攻略: 一、前言 在网页应用开发中,常常需要将一个页面的数据传递给另一个页面,在静态网页中实现页面之间的数据传递非常重要。本文将介绍三种常见的静态页面传值的方法,并提供相应的示例代码。 二、URL传参 URL传参是应用最广泛的传值方式之一,在URL中添加参数,然后通过JavaScript获取这些参…

    JavaScript 2023年6月11日
    00
  • 微信小程序实现单个或多个倒计时功能

    这份攻略将分为以下几个部分: 实现单个倒计时功能 实现多个倒计时并且同步更新的功能 总结和扩展 1. 实现单个倒计时功能 我们可以通过以下步骤来实现一个单个倒计时功能: 在wxml文件中添加一个倒计时的框架: <view>{{countDown}}</view> 在js文件中定义倒计时的初始值和减一的函数: data: { count…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部