簡體   English   中英

使用js對象對其他函數進行函數調用

[英]Function call into other function with js object

我有兩個函數一和兩個,其中一個函數調用了第二個函數,但是它不起作用,

例如:

function one() {
 var a = 1;
 var position = {
  global: function(b) {
    console.log(b);
  }
 }
}

function two(){
 $(window).on('swipedown', function() {
   one();
   position.global(a);
});
}

two();

demo`

的jsfiddle

您需要在函數外部聲明a和position對象,以避免閉合。

var a = null, position = {};

function one() {
  a = 1;
  position = {
  global: function(b) {
    console.log(b);
  }
 }
}

function two(){
 $(window).on('swipedown', function() {
   one();
   position.global(a);
});
}

two();

這里的問題是變量aposition的范圍,因為您已經在函數one聲明了它們,所以它僅存在於該函數內部,一旦退出該函數,變量將不再可用。

由於您正在訪問函數two的變量,因此需要在共享范圍內聲明它們,例如

 var position, a; function one() { a = 1; position = { global: function(b) { snippet.log('b:' + b); } } } function two() { $(window).on('scroll', function() { one(); position.global(a); }); } two(); 
 body { height: 3000px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 


使用變量a另一種方法是使用閉包,例如

 var position; function one() { var a = 1; position = { global: function() { snippet.log('a:' + a); } } } function two() { $(window).on('scroll', function() { one(); position.global(); }); } two(); 
 body { height: 3000px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM