javascript 函数及作用域总结介绍

yizhihongxing

Javascript 函数及作用域总结介绍

Javascript 函数及作用域是 Javascript 学习中最核心和重要的部分之一,下面我们将深入学习并总结它们的基本知识。

函数(Function)

定义

在 Javascript 中,函数是一种数据类型,可以被执行。函数有两种方式定义,一种是函数声明方式,另一种是函数表达式方式。

函数声明方式

function funcName(param1, param2, ...) {
  // 函数体
  return result;
}

这里 funcName 指函数名, param1, param2,... 指函数参数, return 指返回值。

函数表达式方式

var funcName = function(param1, param2, ...) {
  // 函数体
  return result;
}

这里 var 定义了一个函数变量,funcName 是变量名,可不加;param1, param2, ... 是函数参数,不需要在函数定义时指定类型,可以不加;return 指返回值。

调用方式

函数声明方式和函数表达式方式的调用方式是一样的。

var result = funcName(param1, param2, ...);

作用域(Scope)

作用域描述了变量在何处可见与可访问到。Javascript 中的作用域是词法作用域(lexical scope,也称静态作用域)。

题目1: 方式一

var name = "tom's window";

function person() {
    console.log("name: " + name);
}
person(); // name: tom's window

在上述代码中,name 是在 person() 函数的外部定义的一个全局变量,在 person() 中,name 可以被访问到并输出。

题目2: 方式二

function person() {
    var name = "tom's window";
    console.log("name: " + name);
}
person(); // name: tom's window

在上述代码中,name 是在 person() 函数内部定义的,其作用域只能在该函数内进行访问。

尾调用优化

Javascript 引擎的尾调用优化(tail call optimization)可以使得某些函数的递归方式更加节省内存,避免栈溢出等问题。

function factorial (n, p = 1) {
    if (n <= 1) {
        return 1 * p;
    } else {
        let x = n * p;
        return factorial(n - 1, x);
    }
}
console.log(factorial(5)); // 120

factorial() 函数尾部调用自己时进行了优化,使得其递归调用变得高效、节省内存。

以上为 Javascript 函数及作用域的一些重点知识介绍。通过阅读、学习并掌握这些知识点,可以深入理解 Javascript 语言以及编写出更为高效的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 函数及作用域总结介绍 - Python技术站

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

相关文章

  • JavaScript实现世界各地时间显示

    当使用 JavaScript 实现世界各地时间显示时,我们可以利用 Date 对象和其方法,将获取的世界各地时区与本地时间进行计算再进行显示。 以下是实现该功能的完整攻略: 步骤一:获取本地时间 在 JavaScript 中,我们可以通过创建 Date 实例来获取当前本地时间。下面是一个获取本地时间的实例: const localTime = new Dat…

    JavaScript 2023年5月27日
    00
  • Javascript Global对象

    当程序运行后,JavaScript代码可以访问一个称为Global对象的对象。它是预定义的全局对象,提供许多JavaScript库中常用的工具和函数。 全局对象的属性 全局对象提供许多属性,一些常用的如下: Infinity:表示无穷大的数 NaN:表示数字类型无效时的值 undefined:表示未定义值的原始数据类型 全局对象的方法 除了属性之外,全局对象…

    JavaScript 2023年5月27日
    00
  • JS中的Map对象用法及说明

    JS中的Map对象是一种用于存储键值对的数据结构,与Object对象相似,但是它可以使用任何JavaScript类型作为键,包括字符串、数字、布尔值等。在这篇攻略中,我将会介绍Map对象的基本用法和一些示例演示。 Map对象的基本用法 1. 创建Map对象 通过new Map()语句可以创建一个空的Map对象。可以使用Map构造函数来创建Map对象,并且可以…

    JavaScript 2023年5月27日
    00
  • js仿iphone秒表功能 计算平均数

    那么接下来就为大家详细讲解一下“js仿iphone秒表功能 计算平均数”的完整攻略,具体步骤分为以下几个部分: 一、制作计时器功能 1.在HTML中创建一个div用来存放计时器所显示的时间; <div id="clock"></div> 2.在JS中定义计时器的初始值为0,定义一个变量来存储计时器的状态; var …

    JavaScript 2023年5月28日
    00
  • 关于JavaScript数组对象去重的几种方法

    没问题,以下是关于JavaScript数组对象去重的几种方法的完整攻略。 关于JavaScript数组对象去重的几种方法 方法一:使用Set对象 Set对象可以快速去除数组中的重复元素。具体做法是将数组转换成Set对象,再将Set对象转换成数组。这种方法的优点是简洁高效,也符合函数式编程的原则。 示例代码如下: let arr = [1, 2, 3, 2, …

    JavaScript 2023年5月27日
    00
  • HTML+CSS+JavaScript实现放大镜效果

    实现放大镜效果通常需要使用HTML、CSS和JavaScript三种技术进行联合开发。下面将详细讲解HTML+CSS+JavaScript实现放大镜效果的完整攻略,具体分为以下几个步骤: 第一步:准备工作 在开发过程中,我们需要准备一些素材,包括原始图片、处理后的图片,以及用于展示的页面等。 第二步:HTML编写 在编写HTML代码时,我们需要将放大镜效果展…

    JavaScript 2023年5月28日
    00
  • js截取字符串功能的实现方法

    下面是关于JS字符串截取功能的实现方法攻略: 一、JavaScript截取字符串的substr()方法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法: string.substr(start,length) 其中: start 是一个非负整数,表示想要开始抽取的位置 length 是一个非负整数,表示抽取的字符个数 …

    JavaScript 2023年5月28日
    00
  • 突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习

    突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习 介绍 本篇文章主要介绍HTML5中地理信息服务及地理位置API的使用,其中包括了以下内容:1. 地理信息服务的概述2. 地理位置API的基本知识和使用方法3. 常用的地理位置API实例 地理信息服务概述 地理信息服务是指向用户提供有关地理位置信息及相关服务的技术和应用。在H…

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