gpt4 book ai didi

Javascript:将数组作为可选方法参数传递

转载 作者:行者123 更新时间:2023-11-30 13:39:44 25 4
gpt4 key购买 nike

更新:这是我的解决方案(灵感来自已接受的答案):

function log(msg, values) {
if(config.log == true){
msg = [msg];
var args = msg.concat(values);
console.log.apply( this, args );
}
}

更新 2:更好的解决方案:

 function log(msg) {
if(config.log == true){
msg = [msg];
var values = Array.prototype.slice.call(arguments, 1);
var args = msg.concat(values);
console.log.apply( console, args );
}
}

你可以这样调用这个版本:

log("Hi my name is %s, and I like %s", "Dave", "Javascript");

这是原始问题:

console.log 接受一个字符串并用值替换标记,例如:

console.log("My name is %s, and I like %", 'Dave', 'Javascript')

将打印:

My name is Dave, and I like Javascript

我想把它包装在这样的方法中:

function log(msg, values) {
if(config.log == true){
console.log(msg, values);
}
}

“值”参数可能是单个值或多个可选参数。我怎样才能做到这一点?

如果我这样调用它:

 log("My name is %s, and I like %s", "Dave", "Javascript");

我明白了(它无法将“Javascript”识别为第三个参数):

 My name is Dave, and I like %s

如果我这样称呼:

 log("My name is %s, and I like %s", ["Dave", "Javascript"]);

然后它将第二个 arg 视为一个数组(它不会扩展为多个 args)。我缺少什么技巧来扩展可选参数?

最佳答案

虽然这与 jQuery 无关,但我还是可以尝试回答它:)

以下可能有效(未经测试):

function log(msg, values) {
if(typeof config.log != 'undefined' ) {
if( typeof values != 'Array' ) {
values = [values];
}
values.unshift( msg );
console.log.apply( this, values );
}
}

关于Javascript:将数组作为可选方法参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com