[英](function($) { ..})(jQuery); function defined in this wrapper/closure can not be called outside
我有以下代码块,其中我定义了1个函数,我试图在代码块外调用该函数,它给了我函数未定义的错误。为什么?
(function($) {
function addNumbers(num1, num2) {
return num1 + num2;
}
})(jQuery);
addNumbers(2,3) return error undefined function.
我该怎么做才能使addNumbers()在此块之外调用?
这是一个基本的范围界定问题。 如果在另一个函数内部声明一个函数,则只能在该函数内部访问它。 您无法在外部访问它。
您可以简单地将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>
其他功能中定义的功能仅限于该功能。 它们只能由该范围内的其他代码调用。 因此,为了调用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>
您在一个范围内定义一个函数(匿名函数),然后尝试从另一个范围(全局)运行它的问题。 反之,则必须这样做:
// 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);
立即功能是匿名的。 因此,如果要从外部访问内部函数,则必须返回值或函数。
var test = (function($) {
return function addNumbers(num1, num2) {
return num1 + num2;
}
}(jQuery));
console.log(test(2,3));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.