js 函数如何可以处理可变数量的参数

JavaScript016

js 函数如何可以处理可变数量的参数,第1张

可以利用arguments对象:

function test(){

   for(var i=0i<arguments.lengthi++){

      console.log("第"+(i+1)+"个参数:"+arguments[i])

   }

}

test(11,22,33,44,55,66)

test("aaa",88,new Date())

无办法直接做到这一点,不过可以采用其他方法实现,例如:首先,定义被调用函数的参数为va_list类型,同时在调用函数中将可变长参数列表转换为va_list,这样就可以进行变长参数的传递了。看如下所示:

void subfunc (char *fmt, va_list argp)

{

...

arg = va_arg (fmt, argp)/* 从argp中逐一取出所要的参数 */

...

}

void mainfunc (char *fmt, ...)

{

va_list argp

va_start (argp, fmt)/* 将可变长参数转换为va_list */

subfunc (fmt, argp)/* 将va_list传递给子函数 */

va_end (argp)

...

}

这样就OK了!

先看一下JSX的常见写法

JSX是语法糖 ,通过babel转成 React.createElement 函数,在 babel官网 上可以在线把JSX转成React的JS语法

JSX的本质是React.createElement()函数

最后一个参数并未写成可变参数的形式,为什么可以传入多个参数呢?

根元素中有三个子元素,第二个子元素中也有4个子元素,所以 function createElement(type, config, children) {} 中的children是对应是多个参数,类似可变参数的写法。

React实际处理是怎样的呢?

createElement 函数返回的对象是 ReactEelement 对象。

createElement的写法如下

实际开发中不会使用 createElement 来创建 ReactElement 的,一般都是使用 JSX 的形式开发。

ReactElement 在程序中打印一下