[英]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`
您需要在函數外部聲明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();
這里的問題是變量a
和position
的范圍,因為您已經在函數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.