这是一个JavaScript函数,用于确定参数是否为字符串
只是好奇有没有人能简化这个函数?我忍不住想是的,因为参数有很多相似之处
typeof x==";字符串";
有一种方法可以简化它。我问了我的老师,他们告诉我他们不知道。
function isString(string1, string2, string3) {
if (typeof x === "string" && typeof y === "string" && typeof z === "string")
console.log("Yes!" + x + " " + y + " " + z)
else {
console.log("Nope!")
}
}
isString("String1", "String2", "String3")
我真的很期待你的回复!
谢谢-Joe
您可能正在寻找rest参数或arguments
对象,它们可以让您处理任意数量的参数,并在它们上循环(或使用辅助方法(:
function areStrings(...args) {
if (args.every(x => typeof x === "string"))
return "Yes!" + args.join(" ");
else
return "Nope!";
}
console.log(areStrings("String1", "String2", "String3"));
console.log(areStrings(5, "someString"));
您可以将params作为数组o接收,并使用函数参数进行检查:
function isString(...strings) {
if (strings.every(s => typeof s === 'string'))
console.log("They are string")
else
console.log("They are not string")
}
如果您想检查多个变量是否为字符串,可以使用以下函数:
function isString(...args){
for(var i = 0; i<args.length; i++){
if(typeof args[i] !== 'string'){
return false;
}
}
return true;
}
您可以传递任意多的参数,只有当所有参数都是字符串时,结果才会为true。
示例:
isString(4)
返回false
isString("Hello World")
返回true
isString("I am a string", 3, true, "Hello")
返回false
isString("Hello World", "Welcome")
返回true
答案清晰,简单有效。我是来提出另一种做事方式的。箭头函数+三进制。更详细但更简洁。(我不知道每一个酷:(
var resultAmeliored = (...args) => 'Var: '+args.map(val => val+' is '+typeof val).join(', ');
var areStrings = (...args)=>args.every(s => typeof s === 'string')?true:false;
console.log(areStrings("String1", "String2", "String3"));
//true
console.log(resultAmeliored(5, "someString"));
//"Var: 5 is number, someString is string"