2014-09-30 53 views
-2

我在下面有功能isRetina,我试图访问另一个resizeImage()内的结果,但是变量retinaCheck总是让我回到未定义状态。我在开始时声明了全局变量,为什么会这样呢?在另一个函数中访问函数结果

$(window).load(function() { 
    function isRetina() { 
     return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 2)) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent); 
    } 

    var retinaCheck = isRetina(); 

}); 

function resizeImage() { 
    if ($(window).width() > 649) { 
     console.log("resize:" + retinaCheck) 

    } 
}); 
+1

显示完整的代码。 – Cheery 2014-09-30 07:18:50

+0

工作正常:http://jsfiddle.net/rx0khzp0/1/ – DhruvPathak 2014-09-30 07:20:27

+0

寻求调试帮助(“为什么不是这个代码工作?”)的问题必须包括所需的行为,特定的问题或错误**和最短的代码有必要在问题本身**中重现它。如果没有能够重现问题的代码(您的代码不会这样做 - 在snipper中尝试) - 我们无法为您提供帮助。 – 2014-09-30 07:20:33

回答

0

你可以声明全局变量之外window.load和值分配给它里面window.load。当您拨打resizeImage()功能时,您可以阅读视网膜检查值。

var retinaCheck; 
$(window).load(function() { 
    function isRetina(){ 
     return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 2)) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent); 
    } 

    retinaCheck = isRetina(); 

}); 

function resizeImage() { 
    if ($(window).width() > 649) {   
      console.log("resize:"+retinaCheck)    
     }); 
} 
+1

他已经将retinaCheck定义为全局变量。 – DhruvPathak 2014-09-30 07:20:44

+0

这会如何改变?即使有这种情况解决了这个问题 - 提供这个答案没有任何上下文不是很有帮助 - 请考虑扩展它。 – 2014-09-30 07:21:29

+0

更新了我的回答 – 2014-09-30 07:23:38

相关问题