可以利用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 在程序中打印一下