如何在变量中获得价值函数

时间:2018-03-17 23:13:21

标签: javascript

你好,我需要从函数中获取变量 我回答未定义



function etr() {
  var img = new Image();
  img.onload = paramsImg;
  img.src = picFile.result;

  function paramsImg() {
    return img.height;
  };
};


var vvvr = etr();
alert(vvvr);




2 个答案:

答案 0 :(得分:1)

您的功能etr不会返回任何内容。我看到你试图从onload的事件处理程序返回,但是只返回paramsImg函数而不是etr(在图像加载之前已经返回)。您应该使etr接受回调函数或返回Promise,以便在 图像加载后提醒图像高度 。这是一个Promise的例子:



function etr() {
  return new Promise( ( resolve, reject ) => {
    var img = new Image();
    img.onload = _ => resolve(img.height);
    img.onerror = reject;
    img.src = picFile.result;
  } );
};

var picFile = { result: 'https://dummyimage.com/600x1234/000/fff' };

(async function ( ) {
  var vvvr = await etr();
  alert(vvvr);
})( );




答案 1 :(得分:1)

function etr() {
  var img = new Image();
  img.onload = paramsImg;
  img.src = picFile.result;

  function paramsImg() {
    return img.height;
  };
};
  1. 在你的函数中,你在加载之前提到了paramsImg,因此它对img.onload不可见。
  2. paramsImg简单地声明为函数,它没有在对象之外的范围。您需要使用此关键字或在原型中提及fn。
  3. 
    
    function etr(picFile){  
      
      this.paramsImg = function(){
        return img.height;
      };              
    
      var img = new Image();
      img.onload = this.paramsImg;
      img.src = picFile.result;
    }
    
    picfile = {
      result: 10
    }
    
    
    
    var vvvr = new etr(picfile);
    alert(vvvr.paramsImg());