javascript 函数及作用域总结介绍

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 dom 操作详解 js加强

    Javascript DOM 操作详解 简介 DOM(Document Object Model),即文档对象模型,是指HTML或XML文件的一个存储模型。使用DOM,我们可以通过Javascript来操作网页上的内容和结构,实现动态效果。本文旨在介绍Javascript DOM的相关知识,包括节点遍历、元素获取、属性操作、样式操作、事件绑定等内容。 节点遍…

    JavaScript 2023年5月27日
    00
  • Vue2.x响应式简单讲解及示例

    Vue2.x是一款流行的JavaScript框架,它提供了一套响应式方法,可以使我们的网页和数据变得更加动态化和实时化。以下是本文的完整攻略。 什么是响应式 在Vue中,响应式指的是将数据与UI绑定并保持同步的机制。当数据发生变化时,UI也会相应地更新。这种机制使得我们能够轻松地控制UI的变化,而无需担心数据处理。 Vue响应式的原理 Vue的响应式实现分为…

    JavaScript 2023年6月11日
    00
  • js简单设置与使用cookie的方法

    以下是详细讲解“js简单设置与使用cookie的方法”的完整攻略: 设置与使用cookie的方法 什么是cookie cookie是存储在客户端浏览器上的一个小文件,用于保存一些用户数据,以便在下次访问同一站点时使用。 设置cookie 可以使用JavaScript中的document.cookie属性来设置cookie。 下面是设置一个名为username…

    JavaScript 2023年6月11日
    00
  • JS时间特效最常用的三款

    JS时间特效是网站开发中经常使用的技术,比如动态时间显示、倒计时等,下面介绍三款JS时间特效,分别是CountUp.js、Moment.js和Timeago.js。 CountUp.js CountUp.js是一个小型的、跨平台JavaScript库,用于轻松地实现计数器动画。步骤如下: 首先,从GitHub仓库中下载 CountUp.js 库,并将其添加到…

    JavaScript 2023年5月27日
    00
  • 跨域设置Cookie失效问题解决方案原理分析

    当我们通过AJAX等方式在前端向服务端发送请求时,如果请求的地址与前端页面所在的域名不同,就会触发跨域问题。跨域问题是由浏览器的同源策略引起的。 在这种情况下,如果服务端返回了带有Set-Cookie头部的响应,则浏览器默认不会设置该Cookie,导致Cookie失效问题。 解决这个问题的方法是使用CORS(跨域资源共享)技术,在服务端的响应头中添加”Acc…

    JavaScript 2023年6月11日
    00
  • element-ui中导航组件menu的一个属性:default-active说明

    Element UI 是一款基于 Vue 2.0 的桌面端组件库,在其中导航组件 menu 是常用的菜单导航组件之一。该组件有一个属性:default-active,本文将详细讲解该属性。 属性说明 首先,我们来看该属性的官方说明。 default-active 属性可以用来设置默认激活的菜单项,它接收一个字符串类型的 index 值,默认值为 ”。 该属…

    JavaScript 2023年6月10日
    00
  • 原生js实现复制对象、扩展对象 类似jquery中的extend()方法

    实现复制对象可以使用Object.assign()方法或者扩展运算符(…);实现扩展对象可以自己实现一个extend()方法。 复制对象 使用Object.assign()方法 Object.assign()方法可以将源对象的属性,复制到目标对象中。 语法 Object.assign(target, …sources) 参数 target:目标对象,…

    JavaScript 2023年5月27日
    00
  • 毕业论文-大型的WEB应用程序开发

    毕业论文-大型WEB应用程序开发攻略 本文将详细介绍如何完成毕业论文中的大型WEB应用程序开发任务。涉及的内容包括:项目规划、技术栈选择、前端设计、后端设计、数据存储、测试和部署等方面。 项目规划 明确项目目标和需求:对于大型WEB应用程序,一般需要设计详细的功能需求和非功能需求,例如性能、可扩展性、数据安全等。 制定项目计划:在项目规划阶段,需要编制具体的…

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