关于函数参数的问题

艳沐石 2012-02-16 03:11:50
采用js实现国际化的时候,通常需要传递一些参数。

var pattern = "hello, {0}. welcome you come back!";
通过接口,String.format(pattern, "John");来显示
hello, John. welcome you come back!

如果我现在传递参数大于1个,在方法中继续添加参数就可以,即
var pattern = "{0}-{1}-{2}";
String.format(pattern, "p1", "p2", "p3");

现在的问题是,我想封装一个方法,让程序自己实现判断是一个参数还是多个参数。
function display(pattern, params){
// 这个时候,参数封装在params这个数组里
// 实现提示信息的国际化
}

谢谢啦~~~
...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把params作为一个字串变量,多个参数在字串里用逗号或其它分隔符分隔,在函数里用SPLIT切分成数组即可,然后可以检测数组的长度,即 数组.length。
艳沐石 2012-02-17
  • 打赏
  • 举报
回复
谢谢大家,现在这个东西已经基本实现了。
似梦飞花 2012-02-17
  • 打赏
  • 举报
回复
arguments.length获得实际传入的参数
arguments.callee.length获得本应传入的参数
对于实际传入的参数 可以用arguments[i]来获取
jusfr 2012-02-16
  • 打赏
  • 举报
回复
读了下源文件,直接使用其内容方法,代码只有一行如下:
var display = function (pattern, params) {
return String._toFormattedString(false, [pattern].concat(params));
};
var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);
Acesidonu 2012-02-16
  • 打赏
  • 举报
回复
循环数组进行操作不就行啦
色拉油 2012-02-16
  • 打赏
  • 举报
回复
在js方法中参数名只是个代号,传入方法的诗歌arguments数组
判断参数个数 arguments.length
使用的话就是agguments[index]
jusfr 2012-02-16
  • 打赏
  • 举报
回复
String.format是微软的Javascript扩展,猜想你的目的是“使用参数数组而非由逗号分隔的参数列表实现String.format()方法”,不严谨地实现如下:
var display = function (pattern, params) {
var i = 0;
while (params.length) {
pattern = pattern.replace('{' + i + '}', params.shift());
i++;
}
return pattern.replace(/{\d+}/g, '');
};

var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);


回复了两次没有刷新
jusfr 2012-02-16
  • 打赏
  • 举报
回复
String.format是微软的Javascript扩展,猜想你的目的是“使用参数数组而非由逗号分隔的参数列表实现String.format()方法”,不严谨地实现如下:
var display = function (pattern, params) {
var i = 0;
while (params.length) {
pattern = pattern.replace('{' + i + '}', params.shift());
i++;
}
return pattern.replace(/{\d+}/g, '');
};

var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);

jusfr 2012-02-16
  • 打赏
  • 举报
回复
String.format是微软的Javascript扩展,猜想是想实现“传递参数数组而不是由一至多个参数+逗号形式的参数列表,完成String.format”功能,并不严谨地实现如下:
var display = function (pattern, params) {
var i = 0;
while (params.length) {
pattern = pattern.replace('{' + i + '}', params.shift());
i++;
}
return pattern.replace(/{\d+}/g, '');
};

var str = display("{0},{1},{3},{10}", [1, 2, 3, 5]);
alert(str);

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧