当前位置: 首页 > article >正文

JavaScript中函数调用时的参数传递

JavaScript中,function定义时的参数和调用时的参数其实可以不用完全一致的,当然书写比较讲究的可以严格保持一致,这也是一种好的风格。当然想省点儿事的,也有简化的写法。
比如函数定义如下:

function func(){
...

}

调用时来个

letx=func(a,b,c,d);

可不可以,当然可以,只要func()函数的定义体里能识别传入的这些入参,比如这样操作:

  var total = 0;
  for (var i = 0; i < arguments.length; i++) {
    total += arguments[i];
  }
  return total;

再来个例子:

function func(a,b,c,d){
return (a||"")+(b||"")+(c||"")+(d||"")
}
let x=func("a","b");
console.log(x); //ab

这个例子中调用时入参比定义的少几个,少的几个会被认为传入的是undefined,只要代码里允许,那么是可以正常执行的。
这种情况其实很常见,经常我们很多函数是回调函数形式,回调函数的入参是一般error,res1,res2…,其实书写的时候并不一定需要写全它们,后面不需要的可以省略,但是不能从前面开始省略的,如果需要一个执行后的结果值传入的话,那么至少要传入error,res1 比如:

soap.createClient(wsurl,(err, client)=> {
	...
	});

如果只要执行完成就可以,不论是否出错或者结果如何,那么其实连参数都不需要传,比如:

fs.mkdir(tmppath,{ recursive: true },()=> {
	...
	});

另外要注意下,回调函数里的写法一般是一个一个的参数传入,但是promise的then函数里,就不一定是这样传递了,因为then的入参是前面promise的执行结果返回值里的resolve带出来的参数,可能是一个单值,可能是一个json对象,可能是一个数组。比如mysql2的查询

	mysqlpool.query(sqlstr)
		.then(([results,fields])=>{
			});

如果你不需要fields,也可以直接写成

	mysqlpool.query(sqlstr)
		.then(([results])=>{
			});

如果你连结果也不关心,只要执行了就行,那么可以写成:

	mysqlpool.query(sqlstr)
		.then(()=>{
			});

http://www.kler.cn/a/448976.html

相关文章:

  • 深度学习每周学习总结J9(Inception V3 算法实战与解析 - 天气识别)
  • 2025系统架构师(一考就过):案例题之一:嵌入式架构、大数据架构、ISA
  • 基于python+django的外卖点餐系统
  • 项目中如何排查JVM问题?
  • 分布式协同 - 分布式事务_TCC解决方案
  • Linux网络功能 - 服务和客户端程序CS架构和简单web服务示例
  • 华为、华三交换机纯Web下如何创关键VLANIF、操作STP参数
  • etcd+京东hotkey探测使用
  • C++ 中的 Lambda 表达式:函数式编程的利器
  • 深入浅出:多功能 Copilot 智能助手如何借助 LLM 实现精准意图识别
  • 关于稀疏数据的模型选择
  • GESP2级2403 小杨的日字矩阵
  • ISP图像处理简介
  • SpringCloud 入门(3)—— Nacos配置中心
  • 短视频矩阵系统种类繁多,应该如何对比选择?
  • 使用Python实现智能家居控制系统:开启智慧生活的钥匙
  • 【Linux】资源隔离机制 — 命名空间(Namespace)详解
  • Python实战:基于表单的暴力破解——以Pikachu靶机系统为例
  • vue中使用echarts做一个基础可滚动的折线图及dataZoom滚动配置项
  • SQL,生成指定时间间隔内的事件次序号
  • Hadoop完全分布式环境部署
  • malloc 分配大堆块(128KB)的一次探索
  • **Adversarial Demonstration Attacks on Large Language Models**
  • 【Leetcode】855. 考场就座
  • 小程序 - 模拟时钟
  • Echarts连接数据库,实时绘制图表详解