2017-04-26 4 views
0

私は以下のコードから望ましい出力を得ます。私は、所望の出力を取得していない別のpage.Iにこのような何かをしようとすると、これらはJavaScript関数は別のものから呼び出すことはできません

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

印刷データ用の2つのJavaScript関数式です。しかし。

これは私のコードです。

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

移動 'VARのgetData =関数(URL){'上記のvar employeesList = { ' –

+0

機能がその中に定義またはアクセスされていることを確認し、[範囲](https://scotch.io/tutorials/understanding-スコープ内のjavascript)。 – Ninjaneer

+0

変数を使用する代わりに 'function functionName(){}'のように宣言してください。そうすれば宣言される前に使用可能になります。 – Hissvard

答えて

1
    それが定義されている前に、あなたは employeesList
  • getDataを宣言する必要がありますので
  • あなたは、変数を使用することはできませんあなたが使用できるようにアクセスすることができませんでしたdatagetemployeesで、私は、そこにリターンを追加し、変数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();

でその値

私はそれがはっきりしたことを願っています。

0

"機能" を定義する2つの方法があります

  1. するvar FUNC_NAME =関数(){...}
  2. 関数FUNC_NAME(){...}

違いは、2番目のものを使用すると宣言される前に呼び出すことができるということです。

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; 
     } 

    }); 
};