如何在模块中定义的另一个函数中使用变量的值?

时间:2016-07-21 03:24:05

标签: javascript amd

这是我创建模块的方式:

var $ = $ || false;

if (typeof jQuery !== 'undefined') {
    $ = jQuery;
}

var conversekitTemplates = {
    test1: function() {
        alert('hello everyone');
    },
    test2: function() {
        $('body').css('background-color', '#fff');
    },
    test3: 123,
    test4: 440,
    test5: function() {
        var a = apple;
    },
    test6: 'h1>' + a + '</h1>'; //how to use the value of variable a here?
};

这就是我的称呼方式:

require.config({
    paths: {
        'jquery': '/media/jui/js/jquery.min',
        'templates': '/plugins/system/conversekit/templates'
    }
});

require(['jquery', 'templates'], function($) {   
    $('body').html('helo');
    // conversekitTemplates.test1();
    console.log(conversekitTemplates.test6); 
});

我确实在这里提到:Accessing variables from other functions without using global variables

但我不想特别是将值从一个函数传递给另一个函数。我想让任何想要使用函数值的函数都能调用它。

1 个答案:

答案 0 :(得分:0)

我找到了答案,在上面的帖子中我创建了对象文字。这样我认为不能在函数之间共享变量。

现在,我必须制作如下模块模式:

var conversekitTemplates = (function(){

var id = 4;
  return {
    test1: function(){
      alert(id);
    },
    test2: id+3
  };
})();

并像这样访问:

conversekitTemplates.test1();
alert(conversekitTemplates.test2);