目的是想得到内部函数的返回值,现在的函数值在最内层,看了很多关于闭包的,但是还是学艺不精无法实现想要的结果。
想在最外层的函数也就是226行位置操作c变量。
答案是 沒辦法
,異步操作的限制
你可以把 onSelected
想成是一個事件,你要在這事件觸發時做什麼?
例如:
// 在 h1#show-date 顯示日期
function displayDate(c) {
$('#show-date').html(c);
}
function dataCompare() {
$('#ca').canlendar({
// 省略
onSelected: function(view, date, data) {
// 省略
var c = odate-ndate;
displayDate(c);
}
})
}
你可說說你的需求,例如說取得 c
要做什麼?
其实你这个demo中,onSelect是calendar的一个事件的回调函数,跟你像说明的闭包的概念还不太一样。所以你在onSelect这个回调函数中,如果想再讲某一个变量值传递出去,就需要继续采用回调函数来传递。
var f = function(){
var a = function() {
// same code
};
return a;
}
f()();
类似这种,说简单点。闭包就是在一个block中再次创建了一个内部的block,并将这个内部的block返回给外部来使用。