JavaScript 2.9 默认参数和剩余参数

【JavaScript】剩余参数语法(Rest Parameters)详解 剩余参数是 ES6 引入的一种语法形式,用于将函数的多余参数收集到一个数组中。语法上通过在函数参数前加上三个点...实现。// 输出 6// 输出 30在上述例子中,sum函数使用了剩余参数...numbers,无论传入多少个参数,它们都会被打包成一个数组numbers,从而可以统一处理。// ❌ 报错:Rest parameter must be last formal parameter// ✅ 正确。 阅读详情

一、剩余参数

剩余参数语法允许我们将一个不定数量的参数表示为一个数组。

a、语法
function(a, b, ...theArgs) {
  // ...
}

b、剩余参数和 arguments对象的区别

1、剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
2、arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sort,map,forEach或pop。
3、arguments对象还有一些附加的属性 (如callee属性)。

c、从 arguments 到数组

1、没有引入剩余参数时
function f(a, b) {
  var normalArray = Array.prototype.slice.call(arguments);
  // -- or --
  var normalArray = [].slice.call(arguments);
  // -- or --
  var normalArray = Array.from(arguments);
}
2、引入剩余参数后
function f(...args) {
  var normalArray = args;
}

d、解构剩余参数
function f(...[a, b, c]) {
  return a + b + c;
}

f(1)          // NaN (b and c are undefined)
f(1, 2, 3)    // 6
f(1, 2, 3, 4) // 6 (the fourth parameter is not destructured)

e、剩余参数本质就是一个数组,所以可以使用所有数组的方法,而arguments如果要使用数组的方法,需要先转换成数组

参考链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters 

二、默认参数

函数默认参数允许在没有值或undefined被传入时使用默认形参。

a、语法
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { 
    statements 
}

JavaScript 中函数的参数默认是undefined。然而,在某些情况下可能需要设置一个不同的默认值。这是默认参数可以帮助的地方。

如:

果在调用multiply时,参数b的值没有提供,那么它的值就为undefined。如果直接执行a * b,函数会返回 NaN。

function multiply(a, b) {
  return a * b;
}

multiply(5, 2); // 10
multiply(5);    // NaN !

以前使用额外的代码去处理这种情况

function multiply(a, b) {
  b = (typeof b !== 'undefined') ?  b : 1;
  return a * b;
}

multiply(5, 2); // 10
multiply(5);    // 5

现在可以直接用默认参数去处理
function multiply(a, b = 1) {
  return a * b;
}

multiply(5, 2); // 10
multiply(5);    // 5


b、在函数被调用时,参数默认值会被解析
function append(value, array = []) {
  array.push(value);
  return array;
}

append(1); //[1]
append(2); //[2], not [1, 2]

这个规则对于函数和变量也是适用的。

function callSomething(thing = something()) {
 return thing;
}

let numberOfTimesCalled = 0;
function something() {
  numberOfTimesCalled += 1;
  return numberOfTimesCalled;
}

callSomething(); // 1
callSomething(); // 2

c、解构
function f([x, y] = [1, 2], {z: z} = {z: 3}) { 
  return x + y + z; 
}

f(); // 6

参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Default_parameters

JavaScript 默认参数与剩余参数:提升函数灵活性的技巧 JavaScript ES6函数参数处理新特性解析 本文深入探讨ES6引入的默认参数和剩余参数特性,对比传统实现方式的差异,并提供实际应用案例。主要内容包括:1) 默认参数基础语法与高级用法;2) 剩余参数处理不定数量参数的技巧;3) 两种特性的结合使用模式;4) 性能优化建议;5) React组件、API请求等实际应用场景。文章通过代码示例详细展示了参数解构、动态默认值、必填参数检查等进阶技巧,并分析了默认参数的独立作用域特性,为开发者提供全面的函数参数处理方案。 阅读详情

相关推荐

CAN开发笔记(TI开发者推荐笔记)

查阅了很多资料没有查阅到关于5728芯片CAN模块寄存器的介绍,希望通过本文能给做CAN驱动的后来者有一点参考意义,我也是刚接触CAN模块有些不足请各位多多指正。 由下图所示是CAN模块初始化流程图 首先要开始初始化,设置CAN位时间,然后配置message objects, 完成初始化。 1.开始初始化 首先要控制DCAN_CTL 寄存器,该寄存器是CAN模块的总控制器,很多配置通过...

weixin_44316996的博客 3561

关于javascript的undefined和null的一些思考

在javascript中,调用函数时,会开启一个上下文,在上下文初始化的时候,会按照顺序执行三个步骤: 1、函数参数:按照参数的顺序传入参数,如果没有传入的参数会被定义为undefined; 2、函数声明:如果发生命名冲突(主要是与参数命名冲突),会覆盖; 3、变量声明:初始化变量的值为undefined,如果发生命名冲突,会忽略。 function func(a,b) {

martsforever的博客 351

AIDL HAL服务从零到一:构建现代Android硬件抽象层

本文详细介绍了从零开始构建现代Android AIDL HAL服务的完整流程。通过定义接口、实现服务逻辑、配置构建与VINTF清单,并最终集成到系统镜像,开发者可以掌握利用AIDL替代传统HIDL来开发硬件抽象层的核心方法。文章重点解析了AIDL HAL的创建流程,并对比了其与HIDL在语法、工具链和集成方式上的优势,帮助开发者高效构建稳定的硬件接口。

weixin_29174141的博客 145

js-剩余参数

剩余参数 剩余参数与arguments对象区别

前端小白 2110

【MATLAB代码】蚁群算法(Ant Colony Optimization, ACO)路径规划(避障)仿真程序,订阅专栏后可直接查看完整源代码

基于蚁群算法的路径规划系统。可自定义起点、终点和障碍物地图,系统通过蚁群算法自动计算最优路径,并输出路径坐标、障碍物地图和收敛曲线。完整MATLAB源代码直接运行。适用于复杂障碍环境下的路径优化问题。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 3090

独家开源|RK3588 平台 YOLOv5 Android 源码级解析:NPU 量化、多线程与目标跟踪实战

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

m0_71589036的博客 193

详解JS剩余参数

剩余参数的MDN定义: 剩余参数语法允许我们将一个不定数量的参数表示为一个数组。 语法: function(a, b, ...theArgs) { // ... } 剩余参数的本质: 剩余参数是一个数组,即使没有值,也是一个空数组 (function add(a, ...args) { console.log(Array.isArray(args)); //true })(1); 既然剩余参数是一个数组,那就可以在它上面直接使用所有的数组方法和属性,例如: func

不太冷的莱昂的博客 1942

ThingsBoard 场景联动需求

当初有个兄弟请我帮他实现一个需求,需求如上,很简单,实现完成后我怕他操作不来,又写了这份文档给他,今天把这个文档的场景发出来,大家也可以学习一下思路我把需要模拟设备的指令都总结在下面,连接参数截图讲解如下:温度传感器风扇光照传感器灯。

AldrichEugene 1231

JS剩余参数及解构简解

1.剩余参数 1.1动态参数 1.2.剩余参数 1.3.展开运算符 2.解构 2.1.数组解构 2.2.对象解构

Tom299的博客 1416

1、基于改进3D卷积神经网络的阿尔茨海默病分类

本文提出了一种基于改进3D卷积神经网络的阿尔茨海默病(AD)分类方法,利用3D CNN对预处理后的T1加权MRI数据进行空间特征提取,并在VGG网络结构中引入类似ResNet的跳跃连接以缓解模型退化和过拟合问题。实验基于ADNI数据集,包含AD、MCI和NC三类样本,结果表明改进后的3D VGG模型在AD/NC、MCI/NC及多分类任务中均取得了优异性能,尤其在AD/MCI/NC分类中准确率达到98.50%,优于现有典型3D深度学习方法。研究验证了3D CNN在脑部疾病诊断中的有效性,并为AD的早期识别提供

kk1234的博客 89

【大模型】DeepSeek + Coze 打造个人专属AI智能体使用详解

DeepSeek + Coze 打造个人专属AI智能体使用详解

congge 1万+

JavaScript剩余参数和默认参数

剩余参数 注意:剩余参数已被加入ES6标准。 下一个例子中,我们会构建一个函数,它会将第一个参数与剩余参数中最大的数相乘。这个例子可能并不是特别适用于我们的应用,然而,这个例子可能为函数中参数处理提供了一种技术。 console.log('----------------------使用剩余参数--------------------------'); //剩余参数以...做前缀 fun...

且听真言 855

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【JavaScript-Day 23】告别繁琐的参数处理:玩转 ES6 默认参数与剩余参数

这篇文章介绍了JavaScript ES6中两个重要的函数参数特性:默认参数和剩余参数。默认参数允许为函数参数设置预设值,避免undefined错误,支持复杂表达式和动态默认值。剩余参数使用...语法收集多个参数为数组,替代传统的arguments对象,提高代码可读性。文章通过对比ES5和ES6的处理方式,展示了新特性的优势,并提供了实用示例和最佳实践建议,帮助开发者编写更简洁、健壮的JavaScript代码。

吴师兄大模型的博客 1051

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

剩余参数和分布参数

函数参数 剩余参数和分布参数 不使用 arguments 对象也可以获取函数传入的可变量的参数。剩余参数的语法就是**…和一个标识符**,使用这种语法定义可以接受传进来的更多参数,把他们收集在一个数组中(不是类数组哦)。 function fn(sum,...sums){ // 这里的剩余参数名不能和参数名 名称一样哦 console.log("sum",sum,"...",...sums) }...

努力让自己幸运... 458

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

js三参剩余参数,动态参数,默认参数,加js的...展开运算符(笔记)

剩余参数:是es6推出...展开运算符中的功能之一,他是可以接受任意数量的参数,并将它们作为一个数组存储在剩余参数中。中,如果两个对象具有相同的属性名,则后面的对象中的属性会覆盖前面的对象中相同属性名的属性。来将数组展开成为独立的元素,或者将对象展开成为独立的属性。在es9中他推出的新功能剩余对象,它允许你在对象字面量中使用。...的功能还有展开语法它允许你在数组、对象等地方使用。其中他还有一些小细节,比如说:属性覆盖,对象展开语法。动态参数是提出的一个特殊的对象arguments,

m0_60030316的博客 335

剩余参数、拓展运算符

(剩余参数、拓展运算符) 剩余参数 之前,我们在接触多个参数的时候,通常使用arguments对象去代替接收多个参数。但是,使用arguments对象去接收参数有几个不好的地方。 arguments是类数组对象,不能使用数组的很多便捷操作。 箭头函数当中没有arguments对象 为了解决这个问题,在ES6当中,推出了剩余参数的概念。同样的,我们以计算参数的和为例子去学习剩余参数。 const s...

weixin_34239169的博客 583

JS高级(9)ES6新增语法 剩余参数、数组方法

1.剩余参数 function sum (first,...args){ console.log(first) //10 console.log(args) //[20,30] } sum(10,20,30) 1.1.剩余参数和解构赋值配合使用 let names = ['daiwang','LeiLei','lingling'] let [s1,...s2] = names consol...

qq_41523392的博客 510

JavaScript 函数的动态参数与剩余参数

产品需求:写一个求和参数不管用户传入几个实参,都要把和求出来。我们可以用 动态参数 arguments 来实现该需求。是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参。总结:1、arguments 是一个伪数组,只存在于函数中2、arguments 能够动态获取函数的实参3、可以通过循环依次获取arguments的值。

weixin_37133641的博客 547

JS展开语法和剩余参数的实用指南

与传统的arguments对象不同,剩余参数可以直接使用数组方法,避免了显式转换的麻烦。需要注意的是,剩余参数位置必须放在形参列表末尾,否则会触发语法错误。而在处理动态参数时,剩余参数让函数设计更加灵活,避免了硬编码参数数量。这种语法在处理不确定长度的数组时特别有用,比如从API获取的动态数据。我特别喜欢它的代码补全功能,输入...时自动提示相关用法,对新手非常友好。对于需要演示的案例,平台的一键部署功能让我能快速分享给团队成员查看运行效果,省去了搭建演示环境的麻烦。

IronwoodStag78的博客 280

js高级之|ES6字符串模板、剩余参数和symbol

sybol比较难理解

qq_45313933的博客 588

JS展开运算符和剩余参数

JS展开运算符和剩余参数

q12wuyi的博客 642

js中es6扩展运算符和剩余参数的用法

估计大家都猜到了,剩余参数顾名思义就是剩下的参数,指没有对应形参的实参(也就是没显式命名的那些参数),上一个例子中…剩余参数居然是一个真正的数组,而且看起来作用和arguments一样,那有什么不同或者是改进呢?总结:剩余参数可以看做是arguments的升级版,直接返回一个数组,可以更方便使用数组的方法来操作参数。arguments是一个类数组对象,表示输入的所有实参,但没法直接使用Array的方法。上述的个体指的可能是字符,数组的元素或函数的参数等。上述的整体指的可能是数组,字符串或类数组对象等。

Lynn 652

ES6(二)——字符串模板、标签模板字符串、函数的默认参数、剩余参数、数组对象的展开语法、数值的表示、Symbol

一、字符串模板基本使用 在ES6之前,如果我们想要将字符串和一些动态的变量(标识符)拼接到一起,是非常麻烦和丑陋的(ugly)。 ES6允许我们使用字符串模板来嵌入JS的变量或者表达式来进行拼接: 首先,我们会使用 `` 符号来编写字符串,称之为模板字符串; 其次,在模板字符串中,我们可以通过 ${expression} 来嵌入动态的内容; 二、标签模板字符串使用 模板字符串还有另外一种用法:标签模板字符串(Tagged Template Literals)。 我们一起来看一个普通的JavaScr

zep 1247

js怎么做默认函数形参_了解JavaScript函数中的默认参数

前言JavaScript函数可以有默认参数值。通过默认函数参数,你可以初始化带有默认值的正式参数。如果不初始化具有某些值的参数,则该参数的默认值为undefined。请看下列代码:function foo(num1){console.log(num1);}foo();在调用函数foo时,你没有传递任何参数,因此变量num1的默认值设置为undefined。但是,有时你可能需要设置默认值而非unde...

weixin_30479445的博客 542

剩余参数 和 spread参数

三点区分: 剩余参数 rest(用于获取函数的多余参数) 和 spread参数(扩展运算符, 好比rest的逆运算): 形式都是三点加变量 ...val 有时候很迷惑 如何区分: 如果是用在函数形参中 , 获取的到的是一个数组的集合形式, 无论传多少参数 ,接收的是除了它前面形参的其他参数的集合, 只能放到最后(不然会报错):这个时候 是剩余参数; 箭头函数可以用这个来代替普通函数中的 arguments function fn(param1,...rest) { console.log('...

u014105739的博客 489
上一篇: JavaScript 2.8 this的使用
下一篇: JavaScript 3.0 闭包
LetsStudy
博客等级 码龄9年 96粉丝 323原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值