如何编写jQuery / JS函数以便返回值?

时间:2011-09-30 14:30:36

标签: javascript jquery function return-value

如何编写一个jQuery函数,以便它返回一个我可以在函数外部访问的值?我做了类似的事情但是当我试图在函数外部访问它时,它说“未定义”:

$(document).ready(function(){
    function add(y, z) {
        $('p').click(function() {
            x = y + z;
            console.log(x); // shows 3
            return x;
        });     
    }

    var sum = add(1, 2);

    console.log(sum); // shows "undefined"
});

5 个答案:

答案 0 :(得分:4)

这应该有效。不确定为什么在那里添加click事件

$(document).ready(function(){
    function add(y, z) {
        x = y + z;
        console.log(x); // shows 3
        return x;
    }
    var sum = add(1, 2);

    console.log(sum); 
});

答案 1 :(得分:2)

简单回答 - 你做不到。

.click()注册的方法作为Javascript事件循环的一部分异步调用。

您的add函数根本没有返回值。

如果你想要做的是创建一个jQuery样式实用程序函数,而不是一个作用于元素的方法,你会这样做:< / p>

(function($) {
     $.add = function(y, z) {
         return y + z;
     }
})(jQuery);

用法:

var x = $.add(1, 2);

答案 2 :(得分:2)

function add(y, z) {
   $('p').click(function() {
        x = y + z;
        console.log(x); // shows 3
        return x;
    });   
    return y + z;
}

答案 3 :(得分:0)

在这种情况下,该函数是一个匿名回调函数,在click事件发生时调用。你设置它的方式,add(x, y)的功能是为

标签上的点击事件创建一个新的处理程序。

答案 4 :(得分:0)

我不知道为什么会在事件中添加点击事件。它应该单独处理。根据我的说法,代码应该看起来像这样。

$(document).ready(function() {
function add(y, z) {
    var x = y + z; // good to make it local scope
    console.log(x); // shows 3
    return x;
}
var sum = add(1, 2);
document.write(sum); // shows "undefined"
});