函数 - JS

发布时间:2024年01月21日

基本语法

  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. 外部变量:不被块限制的变量,常常是全局变量,也可以是从其他地方导入的变量,一般可以在块内部被操作,如循环体、函数体等都可以对外部变量进行操作。
文章来源:https://blog.csdn.net/wander_alice/article/details/135719633
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。