操作系统:Linux version 4.4.131.D001.64.190906 (YHKYLIN-OS@Kylin)
WPS版本:WPS Office 2019 WPS表格(11.8.2.10533)
一个简单的for循环语句:
function testFor() {
for (let i=1; i<20; i++) {
Range("C" + i).Value2 =i
}
}
语法上和VBA差异挺大的,里面有let关键字,这个其实和VBA倒是差不多,在VBA里我们一般这么用:
Dim i As Long
i = 100
VBA里在对象的赋值上,是一定要set关键字的,但值类型是可以省略let关键字的。
就这个简单的for循环语句,差点把我整放弃了!
这个语句上面只循环了20次,那是因为我尝试把数字改到50的时候,WPS竟然卡死了!
循环20次的情况下,我尝试多运行了几次,竟然也卡死了!
查看进程,发现进程的等待频道字段标识的是futex_wait_queue_me,baidu了一下,发现这个是Linux内核函数,那是完全的不懂啊!
后来把这个语句单独放到一个新文件里又正常了,然后回到原来的那个文件,删除了一些Sheet和单元格内容后,也正常了,再怎么测试也没复现bug!!
和VBA一样,for语句也有一种for...in的用法:
function testForIn() {
var arr = new Array(3)
for (let i = 0; i < 10; i++) {
arr[i] = "arr" + i
}
arr[10] = "arr10"
for (x in arr) {
Debug.Print(arr[x])
}
}
但这里的x in arr和VBA是不一样的,在VBA里,这里的x是arr数组中当前遍历值的一个拷贝,而JS里x是arr的下标!