Chrome 说我正在使用非法函数调用

Chrome says I am using illegal function invocation

我正在尝试编写一些 Javascript 代码,其中涉及调用另一个函数的函数。出于某种原因,我在 Chrome 开发工具中收到一条错误消息,第 6 行显示 "Uncaught TypeError: Illegal invocation"。但是,函数 getRequest 似乎仍然执行并将 "h" 记录到控制台。这是怎么回事?

$(document).ready(function(){});
$(function(){
  $('#search').click(function(event){
    event.preventDefault();
    var searchTerm = $('#query').val();
    getRequest();
  });
});

function getRequest(searchTerm){
  console.log("h");
  var params = {
    part: 'snippet',
    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: $('#searchbox') //searchTerm
  };
  url = 'https://www.googleapis.com/youtube/v3/search';

  $.getJSON(url, params, function(data){
    showResults(data.Search);
    //console.log("x");
  });
}

你的函数 'getRequest' 有一个 'searchTerm' 属性,你调用你的函数时没有传递任何属性。

$(function(){
  $('#search').click(function(event){
    event.preventDefault();
    var searchTerm = $('#query').val();
    getRequest(); // Here is the problem
  });
});

您正在将 JQuery 对象作为参数传递,并且 JQuery 无法序列化它:

    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: $('#searchbox') //searchTerm
};

如果它是输入,您可以使用 .val()

传递它的值
    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: $('#searchbox').val() //searchTerm
};

只需使用您在方法中收到的参数(这就是您创建它的原因,不是吗?)

getRequest(searchTerm);

然后

    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: searchTerm
};