JavaScript函数不能相互调用

时间:2017-04-26 06:41:30

标签: javascript

我从下面的代码得到了所需的输出。这是用于打印数据的两个JavaScript函数表达式

(function(){
var getData=function()
{
   console.log("getdata");
},
setData=function()
{
  getData();
  console.log("setData");
};
setData();
})();

但是当我在另一个页面上尝试这样的事情时。我没有得到理想的输出。

这是我的代码。

var employeesList = {
    getemployees: function () {
    var data= getData("Employees/GetEmployees");
    },
    init: function () {
        this.getemployees();
    }
}.init();

  var getData = function (url) {
    var error = false;

    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function (data) {
            return data;
        },
        error: function () {
            return error = true;
        }

    });
};

我收到了这样的错误。 getData不是一个函数 请帮忙。

2 个答案:

答案 0 :(得分:1)

  • 在定义变量之前,您无法使用变量,因此您必须在employeesList之前声明data
  • getemployees中的变量init无法访问,我在那里添加了一个返回值,因此您可以在var getData = function (url) { var error = false; /*$.ajax({ type: 'GET', url: url, dataType: 'json', success: function (data) { return data; }, error: function () { return error = true; } });*/ return 'test_result'; }; var employeesList = { getemployees: function () { //Here you should return the result return getData("Employees/GetEmployees"); }, init: function () { var res = this.getemployees(); console.log(res); } }.init();中使用其值

{{1}}

我希望很清楚,再见。

答案 1 :(得分:0)

有两种方法可以定义"功能":

  1. var func_name = function(){...}
  2. function func_name(){...}
  3. 不同之处在于,当您使用第二个时,可以在声明之前调用它。

    var employeesList = {
        getemployees: function () {
        var data= getData("Employees/GetEmployees");
        },
        init: function () {
            this.getemployees();
        }
    }.init();
    
      //var getData = function (url) {
    function getData (url) { // <====== change to this
        var error = false;
    
        $.ajax({
            type: 'GET',
            url: url,
            dataType: 'json',
            success: function (data) {
                return data;
            },
            error: function () {
                return error = true;
            }
    
        });
    };