Javascript返回函数内的函数

时间:2015-10-07 07:36:02

标签: javascript nested return

鉴于此代码:

var x=5;
var fx=function(){
    console.log("hey");
    (function(){
        if (x==5){
            console.log('hi');
            return;
        }
    })();
    console.log('end');
};

fx();

如何以console.log时未执行最终x==5的方式返回?

我是javascript的新手,所以也许我错过了一些东西......

4 个答案:

答案 0 :(得分:1)

你不能那样返回,而是你可以使用一个标志或使内部函数返回一个像

这样的值



var x = 5;
var fx = function() {
  snippet.log("hey");

  var flag = (function() {
    if (x == 5) {
      snippet.log('hi');
      return false;
    }
  })();
  //if the returned value is false then return
  if (flag === false) {
    return
  }
  snippet.log('end');
};

fx();

<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

你可以将你的功能包装到一个条件

var x=5;
var fx=function(){
   console.log("hey");
   if( !(function(){
       if (x==5){
           console.log('hi');
           return true;
       }
    })() ){
       console.log('end');
    }
};

fx();

<强> JSFIDDLE DEMO

答案 2 :(得分:0)

&#13;
&#13;
var x = 5;
var fx = function() {
  console.log("hey");

  if (x == 5) {
    console.log('hi');
    return;
  }

  console.log('end');
};

fx();
&#13;
&#13;
&#13;

答案 3 :(得分:0)

你可以使用if语句,也可以根据你想要做的hwta

如果

var x=5; var fx=function(){
    console.log("hey");
    (function(){
        if (x==5){
            console.log('hi');
            return;
        }
    })();
    if(x != 5){
        console.log('end');
    } };

fx();

其他

var x=5;
var fx=function(){
    console.log("hey");
    (function(){
        if (x==5){
            console.log('hi');
            return;
        } else {
            console.log('end');
        }
    })();
};

fx();