【发布时间】:2017-03-03 13:26:30
【问题描述】:
我正在尝试将一个函数传递给我的简单教程代码,以便我可以在页面上触发事件。
我有两个 javascript 文件:map.js 和 tutorial.js。根目录中的 Map.js 和 tutorial.js 处于闭包中,因为我希望能够毫无问题地重用它。
map.js 中的函数
function foo(bar){
// do something
}
tutorial.js 中的闭包。我只是包括我的 callFunc 方法,但我从页面上具有数据属性的元素中获取 $step。
<li data-func="foo" data-param="bar">...</li>
我无法让这个函数实际调用。如您所见,我已经尝试过 window 和 root。
(function ($, root, window) {
// Use strict mode to reduce development errors.
// @link http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/
"use strict";
/**
* Calls function from step and passes params.
*/
function callFunc($step) {
var func = $step.attr("data-func");
var param = $step.attr("data-param");
if (func !== undefined) {
console.log(root.func);
if (param !== undefined) {
window.func(param);
} else {
window.func();
}
}
}
})(jQuery, this, window);
map.js 文件有一个函数 foo(bar)。我想从我的闭包中调用它来获取教程。
【问题讨论】:
-
为什么这个问题会被否决?我以为我提供了足够的信息?
标签: javascript scope closures