Javascript 使函数返回的变量在包含函数内可访问

Javascript 使函数返回的变量在包含函数内可访问,javascript,Javascript,我无法返回数据变量,以便其他函数可以使用该自执行函数console.log正在吐出未定义的。。。知道我做错了什么吗 (function(){ var dataVariable; function boom(){ dataVariable = document.querySelectorAll('.className'); return dataVariable; } console.log(dataVariab

我无法返回
数据变量
,以便其他函数可以使用该自执行函数
console.log
正在吐出
未定义的
。。。知道我做错了什么吗

(function(){

     var dataVariable;

      function boom(){
        dataVariable = document.querySelectorAll('.className'); 
        return dataVariable;
      }

      console.log(dataVariable);

})();

dataVariable是在boom函数中分配的,请尝试执行boom并在控制台中记录它=),希望这对您有所帮助

(function(){

  var dataVariable;

  function boom(){
    dataVariable = document.querySelectorAll('.className'); 
    return dataVariable;
  }

  console.log(boom());

})();

内部函数将返回
dataVariable
。但是外部函数没有设置为返回任何内容。实际上,您也没有调用内部的
boom()
函数,因此它不会执行

除非调用函数,否则函数声明不会执行(返回)任何操作。 So
var数据变量结束时未初始化,因此其值
未定义

  (function(){
    var dataVariable;

   function boom(){
    dataVariable = document.querySelectorAll('.className'); 
    return dataVariable;
  }
  boom();// missing line
  console.log(dataVariable);

})();

您需要调用boom函数才能执行该代码

(function(){

  function boom(){
    return document.querySelectorAll('.className'); 
  }

  var dataVariable = boom();

  console.log(dataVariable); 
})();

如果您想要执行
boom
execute,那么您需要调用它,我认为如果您放置行
boom()控制台上方的code>。log
你会得到你期望的结果。您还可以执行
dataVariable=boom()
但这是多余的,因为在函数内部以及函数返回时都会赋值。外部函数未设置为返回IIFE在放入变量之前无法返回。