我有一种在C语言中实现的Duff装置,它可以很好地工作(将文本格式化为货币):
#include <stdio.h>
#include <string.h>
char *money(const char *src, char *dst)
{
const char *p = src;
char *q = dst;
size_t len;
len = strlen(src);
switch (len % 3) {
do {
*q++ = ',';
case 0: *q++ = *p++;
case 2: *q++ = *p++;
case 1: *q++ = *p++;
} while (*p);
}
*q++ = 0;
return dst;
}
int main(void)
{
char str[] = "1234567890123";
char res[32];
printf("%s\n", money(str, res));
return 0;
}
输出:
1,234,567,890,123
但是我在尝试用Javascript实现时遇到了问题:
function money(src, dst) {
var len = src.length;
var i = 0;
switch (len % 3) {
do {
dst += ',';
case 0: dst += src[i++];
case 2: dst += src[i++];
case 1: dst += src[i++];
} while (src[i]);
}
return dst;
}
var str = "1234567890123";
var res = "";
console.log(money(str, res));
Node.js返回以下错误:
do {
^^
SyntaxError: Unexpected token do
我的问题是:JavaScript是否支持计算GOTO语句?
P.D: 我不想要替代方案,我只想知道为什么它不起作用。
相关问题:Duff's Device在其他语言中是否可行?
window.setTimeout(function(){ /* */ }, 100);
。如果这样的函数在循环内部声明,它可能会给人留下在循环内部运行(因此能够使用break
、continue
等)的印象,但如果异步执行,则不是这种情况。只需搜索“javascript return not working”,你就会找到大量新手问题,询问这个问题,只是换成了返回值而已。 - Siguza