javascript - JavaScript 函数默认参数值
问题描述
我正在尝试为函数参数设置默认值,它将向我的服务器查询初始值。
最终目标是我将能够单击我创建的列表项之一来检索并创建一个新列表。
<script type="text/javascript">
$(function getJobs(jobid=0) {
{#jobid = 0;#}
console.log("jobid: " + jobid);
let query = {id: jobid};
console.log(query);
$.getJSON("{% url 'website:get-jobs' %}", query, function (data) {
console.log("getjson");
$.each(data, function (key, value) {
console.log(key + " - " + value);
$('#jobs-list').append("<li id='" + key + "'" + "href='#'" + "onclick=getJobs(key)" + ">" + value + "</li>");
});
});
})
</script>
如果我手动将 jobid 设置为 0(在上面的代码中注释掉)一切正常。如果我尝试在函数参数列表中设置它,我会在我的 console.log 中得到它: jobid: function(e,t){return new w.fn.init(e,t)}
解决方案
当 jQuery 调用回调时$(function(x) { ... })
,参数是 jQuery 对象本身,因此永远不需要默认值
所以,你会想要这样做
$(function() {
function getJobs(jobid = 0) {
console.log("jobid: " + jobid);
let query = {id: jobid};
console.log(query);
$.getJSON("{% url 'website:get-jobs' %}", query, function (data) {
console.log("getjson");
$.each(data, function (key, value) {
console.log(key + " - " + value);
$('#jobs-list').append("<li id='" + key + "'" + "href='#'" + "onclick=getJobs(key)" + ">" + value + "</li>");
});
});
}
getJobs();
});
或者,使用您的原始代码,您当然可以测试 typeof jobid 是一个函数的情况,并将其设置为0
......即
$(function getJobs(jobid) {
if (typeof jobid === 'function') {
jobid = 0;
}
console.log("jobid: " + jobid);
let query = {id: jobid};
console.log(query);
$.getJSON("{% url 'website:get-jobs' %}", query, function (data) {
console.log("getjson");
$.each(data, function (key, value) {
console.log(key + " - " + value);
$('#jobs-list').append("<li id='" + key + "'" + "href='#'" + "onclick=getJobs(key)" + ">" + value + "</li>");
});
});
});
推荐阅读
- flutter - Flutter 中 Provider 背后的模式可能是什么
- python - 定义类的部分特化
- python - 是否可以返回 tkinter 按钮的选项?
- javascript - 暗模式开关 CSS 未显示
- sql - 需要包含两个值的参数有问题
- go - Nack 消息并选择重新投递时间
- reactjs - 使用 useState 和 useEffect 钩子响应更新页面的 H1 状态显示
- sql - 如何显示没有小数和分隔符的数字?
- android - android - 在 RecyclerView 适配器中创建和使用 ViewBinder
- c# - C# - 创建可通过整个项目访问的变量