我有以下块,我已经定义了1个函数,我试图在块外调用该函数,它给我函数undefined error.why?
(function($) {
function addNumbers(num1, num2) {
return num1 + num2;
}
})(jQuery);
addNumbers(2,3) return error undefined function.
如何让addNumbers()在此块之外调用?
答案 0 :(得分:2)
这是一个基本的范围界定问题。如果在另一个函数中声明一个函数,它只能在该函数内部访问。你不能在外面访问它。
答案 1 :(得分:2)
您只需将inner
函数返回给变量并在外面的任何地方使用它。
var myFunction = (function($) {
function addNumbers(num1, num2) {
return num1 + num2;
}
return addNumbers;
})(jQuery);
alert(myFunction(2,3));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
答案 2 :(得分:1)
其他函数中定义的函数作用于该函数。它们只能由该范围内的其他代码调用。因此,为了调用addNumbers()
函数,调用必须位于addNumbers()
函数的父函数内。
示例:强>
function test() {
function addNumbers(num1, num2) {
console.log(num1 + num2);
}
addNumbers(2, 3);
}
test();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
答案 3 :(得分:1)
您在一个范围(匿名函数)中定义函数,并尝试从另一个范围(全局)运行它的问题。你必须这样做,反之亦然:
// Declare function first.
function addNumbers(num1, num2) {
return num1 + num2;
}
// Now, inside anonymous function - you can use your function (because it in global scope, and accessible from here).
(function($) {
console.log(addNumbers(2,3));
})(jQuery);
答案 4 :(得分:0)
直接功能是匿名的。所以,如果你想从外部访问内部函数,你必须返回值或函数。
var test = (function($) {
return function addNumbers(num1, num2) {
return num1 + num2;
}
}(jQuery));
console.log(test(2,3));