函数 - JS

基本语法

  1. function 关键字;
  2. 函数名,应简明扼要且具有描述性,没有函数名就是匿名函数
  3. 参数列表,个数≥0,小括号不能省略;
  4. 函数体。
/* 基本语法 */
function 函数名(参数) { 函数体 }

声明与调用

  1. 通过 function 声明创建一个函数,基本语法如上所示;
  2. 通过 函数名(相应参数) 进行调用。
function isPrime(n) {for (let i = 2; i < n / 2; i++) {if ( n % i == 0) return false;}return true;
}isPrime(11)
isPrime(111)

返回值

  1. 通过 return needed 返回需要的数据;
  2. 通过 return ; 返回空,空也是一个数据,null/undefined,严格来说是未定义undefined
  3. 函数体执行完 return 语句后,立即结束调用并返回数据。
function one() { return 1; }
function nothing() { return ; }		// 亦或是 function nothing() {  }
one() === 1				// true
nothing() == null		// true
nothing() === undefined	// true 严格等于

匿名函数

  1. 没有函数名的函数,一般声明后立即调用;
  2. 通过函数表达式赋值给一个变量,后续调用;
  3. 常用于响应事件触发(如按钮点击事件)。
myButton.onclick = function () { alert('Push'); }	// myButton 需先建立

函数表达式 - 另一种函数的创建方式

  1. 通过 function 引导的函数表达式(同时也就是匿名函数);
  2. 将函数表达式赋值给一个变量,这个变量就成为了可以被调用的函数了;
  3. 无论哪一种函数创建的方式,得到的函数,都是一个“值”:
    • 既可以被赋值等操作;
    • 也可以作为函数的参数,称为回调函数(回调)。
/* 下面两种函数的创建是等效的 */
function f() { return 1; }
f()		// 1
let g = f;let f = function () { return 1; }
f()		// 1
let g = f;/* 函数作为参数 */
function showYourFunc(n, fn) {if (fn !== undefined) alert(fn);else alert(n)
}
showYourFunc(111, )		// 弹窗显示111
showYourFunc(111, function() { /* 这是一个回调,但是没有内容只有注释 */ })	// 弹窗显示回调函数

函数声明 VS 函数表达式

  1. 函数声明存在变量提升,所以可先调用,再声明
  2. 函数表达式必须创建后才能调用,一般是即刻调用的场景。

函数参数

  1. 在声明中,称 parameter,在调用时,argument
  2. 加入参数可以实现更复杂的逻辑功能;
  3. 参数可以是任何数据,包括对象、数组、函数等;
  4. 可以将函数体简化。
function calc(a, b, operator) {const ops = ['+', '-', '*', '/', '**', '%']if (ops.includes(operator)) {return eval(`${a}${operator}${b}`);}return a + b;
}

默认值

function name(parameter1=默认值1, parameter2=默认值2) { 函数体 }
  1. 旧 JS 需要在函数体里提供默认值,新 JS 可以在参数列表中直接给出;
  2. 没有自定义的话, 也有默认值,是 undefined
/* 旧 JS 的手段 */
function f(p) {if (p === undefined) p = 1;	// 以下两种亦可以// p = p || 1// p = p ?? 1
}/* 新 JS 的手段 */
function f(p = 1) {
}

作用域

  1. 局部变量:局部作用域里的变量;
  2. 全局变量:全局作用域里的变量,一般只有项目级的、公共的变量才会定义在全局;
  1. 内部变量:块内部的变量,像函数等一些块的内部变量,只能作用在块内;
  2. 外部变量:不被块限制的变量,常常是全局变量,也可以是从其他地方导入的变量,一般可以在块内部被操作,如循环体、函数体等都可以对外部变量进行操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

立体视觉几何(一)

1.什么是立体视觉几何 立体视觉对应重建&#xff1a; • 对应&#xff1a;给定一幅图像中的点pl&#xff0c;找到另一幅图像中的对应点pr。 • 重建&#xff1a;给定对应关系(pl, pr)&#xff0c;计算空间中相应点的3D 坐标P。 立体视觉&#xff1a;从图像中的投影恢复场景中点…

list下

文章目录 注意&#xff1a;const迭代器怎么写&#xff1f;运用场合&#xff1f; inserterase析构函数赋值和拷贝构造区别&#xff1f;拷贝构造不能写那个swap,为什么&#xff1f;拷贝构造代码 面试问题什么是迭代器失效&#xff1f;vector、list的区别&#xff1f; 完整代码 注…

React16源码: React中的reconcileChildIterator和reconcileChildrenArray的源码实现

reconcileChildIterator 和 reconcileChildrenArray 1 &#xff09;概述 在react更新某一个节点的时候&#xff0c;要根据这个节点&#xff0c;它的类型去获取它的children比如说如果是 Function Component&#xff0c;它要调用这个 component 计算出它的return的属性return的…

qt学习:QT对话框+颜色+文件+字体+输入

目录 概述 继承图 QColorDialog 颜色对话框 QFileDialog 文件对话框 保存文件对话框 QFontDialog 字体对话框 QInputDialog 输入对话框 概述 对于对话框的功能&#xff0c;在GUI图形界面开发过程&#xff0c;使用是非常多&#xff0c;那么Qt也提供了丰富的对话框类QDia…

网络:FTP

1. FTP 文件传输协议&#xff0c;FTP是用来传输文件的协议。使用FTP实现远程文件传输的同时&#xff0c;还可以保证数据传输的可靠性和高效性。 2. 特点 明文传输。 作用&#xff1a;可以从服务器上下载文件&#xff0c;或将本地文件上传到服务器。 3. FTP原理 FTP有控制层面…

坦克大战游戏代码

坦克大战游戏 主函数战场面板开始界面坦克父类敌方坦克我方坦克子弹爆炸效果数据存盘及恢复图片 主函数 package cn.wenxiao.release9;import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JFrame; import javax.swing.JMenu; impor…

RS-485通讯

RS-485通讯协议简介 与CAN类似&#xff0c;RS-485是一种工业控制环境中常用的通讯协议&#xff0c;它具有抗干扰能力强、传输距离远的特点。RS-485通讯协议由RS-232协议改进而来&#xff0c;协议层不变&#xff0c;只是改进了物理层&#xff0c;因而保留了串口通讯协议应用简单…

Java设计模式之抽象工厂模式详解

Java设计模式之抽象工厂模式详解 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在今天的篇章中&#xff0c;我们将探索Java设计模式的一种奇妙魔法——抽象工厂模式…

【HarmonyOS】掌握布局组件,提升应用体验

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…

【RT-DETR有效改进】华为 | GhostnetV2移动端的特征提取网络效果完爆MobileNet系列

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

QGraphicsView 如何让图形大小适配窗口

1. setSceneRect 做什么用&#xff1f; setSceneRect是一个Qt中的函数&#xff0c;用于设置QGraphicsView中的场景矩形&#xff08;QRectF&#xff09;。 QGraphicsView是一个用于显示和编辑图形场景的控件&#xff0c;而setSceneRect函数用于设置场景矩形&#xff0c;即指定…

自动控制原理——数学模型建立

目标 1.数学模型概念 描述系统输入、输出变量以及内部个变量之间的关系的数学表达式 2.建模方法 解析法&#xff08;机理解析法&#xff09;: 根据系统工作所依据的物理定律写运动方程 实验法&#xff08;系统辨识法&#xff09;&#xff1a; 给系统施加某种测试信号&am…

万户 ezOFFICE wf_process_attrelate_aiframe.jsp SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

Intel开发环境Quartus、Eclipse与WSL的安装

PC &#xff1a;win10 64bit 安装顺序&#xff1a;先安装Quartus 21.4&#xff0c;接着Eclipse或者WSL&#xff08;Windows Subsystem for Linux&#xff09;&#xff0c;Eclipse与WSL的安装不分先后。 为什么要安装Eclipse&#xff1f; 因为Eclipse可以开发基于Nios II的C/…

SwiftUI 框架有哪些主要优势

SwiftUI是苹果公司在2019年推出的一种用于构建用户界面的框架&#xff0c;它使用Swift语言编写&#xff0c;并且与iOS、iPadOS、macOS、watchOS和tvOS等平台兼容。下面简单的看下有哪些主要的优势。 声明式的界面描述 使用声明式编程风格&#xff0c;通过简洁的代码描述用户界…

力扣645.错误的集合

一点一点地刷&#xff0c;慢慢攻克力扣&#xff01;&#xff01; 王子公主请看题 集合 s 包含从 1 到 n 的整数。不幸的是&#xff0c;因为数据错误&#xff0c;导致集合里面某一个数字复制了成了集合里面的另外一个数字的值&#xff0c;导致集合 丢失了一个数字 并且 有一个数…

C++:基于C的语法优化

C&#xff1a;基于C的语法优化 命名空间命名空间域域作用限定符展开命名空间域 输入输出缺省参数全缺省参数半缺省参数 函数重载参数类型不同参数个数不同参数类型的顺序不同 引用基本语法按引用传递返回引用引用与指针的区别 内联函数autoauto与指针和引用结合 范围for循环nul…

红队打靶练习:W34KN3SS: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、gobuster 5、dirsearch WEB web信息收集 目录探测 漏洞利用 openssl密钥碰撞 SSH登录 提权 get user.txt get passwd 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB…

常用的目标跟踪有哪些

目标跟踪是计算机视觉领域的一个重要研究方向&#xff0c;主要用于实现视频监控、人机交互、智能交通等领域。下面介绍几种常用的目标跟踪方法&#xff1a; 特征匹配法 特征匹配法是目标跟踪中最基本的方法之一&#xff0c;其基本原理是通过提取目标的特征&#xff0c;然后在…

羊驼系列大模型LLaMa、Alpaca、Vicuna

羊驼系列大模型&#xff1a;大模型的安卓系统 GPT系列&#xff1a;类比ios系统&#xff0c;不开源 LLaMa让大模型平民化 LLaMa优势 用到的数据&#xff1a;大部分英语、西班牙语&#xff0c;少中文 模型下载地址 https://huggingface.co/meta-llama Alpaca模型 Alpaca是斯…