[TOC] > Sat Apr 24 2021 13:33:50 GMT+0800 (GMT+08:00) 这点已经在 【从Visual Basic Script 转到 JavaScript】中提到了,但我们再细说下: > 例子(不要在WPS JS宏编辑器里测试,打不出来的,不仅仅只是 `console`首字母小写的问题): ```js function _m_option(){ console.log(arguments[0]) } _m_option() // undefined function _m_option1(){ console.log("option1:" + arguments[0]) console.log("option2:" + arguments[1]) } _m_option1(,1) // 报错 function _m_option2(){ console.log("option1:" + arguments[0]) console.log("option2:" + arguments[1]) } _m_option2(1,) // option1:1 option2:undefined ``` > 如果要在 WPS JS 编辑器里试: > 1. console改成 Console > 2. 写一个函数,在其内部调用这三个函数: > ```js > function _m_tryIt(){ > _m_option() > _m_option1(,1) > _m_option2(1,) > } > ``` > 1. 最后执行 `_m_tryIt`。 ## 总结 在WPS JSAPI中,当有多个参数时: 1. 对缺省的参数需要用 `undefined` 占位补齐, 有时候可以是`null`; ```js Worksheets.Item("Sheet1").Move(null,Worksheets.Item("Sheet3")) ``` > 记住这一点对使用API很有用,因为实测证明 WPS JS宏编辑器中的【立即窗口】有点问题(可能是浏览器开发工具和NodeJS用多了,觉得不适应),像 Object、Array、RegExp这些类型不能被 Console.log 打印出来,更诡异的还有: 函数单纯 `return` 时(实际值 undefined)【立即窗口】是空白的。总之 Debug 的时候会觉得心好累…… Console相当于 VBE 中的 Debug,打印的结果会在【立即窗口】显示: * Console.log() 相当于 Debug.Print()