检查作为参数传递的函数时,typeof将不起作用

时间:2019-10-15 16:34:30

标签: javascript typeof

JavaScript的新手。 我想检查temp是否为函数。我也想知道为什么typeof在这种情况下不起作用:函数作为参数传递的情况。了解它是我的目的,所以请不要使用jQuery。感谢所有帮助。谢谢

function getParams(foo, bar) {
  if (typeof bar === 'function') console.log("bar is a function");
  console.log(typeof bar); // string: because i returned string. But why not a "function" ? 
}

function temp(element) {
  return element;
}

function runThis() {
  getParams("hello", temp("world"));
}


runThis();

1 个答案:

答案 0 :(得分:2)

guess=2 返回一个字符串,因此您传入的是字符串而不是函数。

您是要传递temp('world')吗?

temp

如果您还希望将参数传递给传入的函数,则可以执行以下操作(有多种方法可以完成此操作):

function getParams(foo, bar) {
  if (typeof bar === 'function') console.log("bar is a function");
  console.log(typeof bar); // string: because i returned string. But why not a "function" ? 
}

function temp(element) {
  return element;
}

function runThis() {
  getParams("hello", temp("world")); // <-- temp("world") isn't a function. It's the result of a function
}

// Did you mean to do this?
function runThis2() {
  getParams("hello", temp);
}


runThis();
runThis2();