如何在不调用 return 的情况下从 Javascript 函数 return?
How to return from a Javascript funtion without calling return?
我正在尝试简化我每次都使用的一行代码:
if (we_need_to_exit) { op(); return; }
我有没有机会定义一个函数,像这样:
function my_return (x) {
x.op();
x.return;
}
并像这样使用它:
if (we_need_to_exit) { my_return(this); }
是否可以定义这样的函数?
编辑
最适合 in my case 的简单解决方案如下:
if (we_need_to_exit) { return op(); }
不,一旦你调用 my_return
,my_return
内的 return
就是从 my_return
.
内到 return
你可以通过以下方式做你想做的事:
if (we_need_to_exit) { return my_fn(this); }
你的 my_fn
将是:
function my_fn (x) {
x.op();
// return any value you want, or use "return;" or just omit it
}
为什么这行不通:
function my_return (x) {
x.op();
x.return; //[1] [2]
}
//-----and use it like-------------------
if (we_need_to_exit) { my_return(this); //[3]}
- 表示在x上创建return 属性,不会return.
- 将
x.return;
替换为 return;
将 return 来自函数,而不是来自它的调用之外(在 [3],这是你的 objective)。
'my_return(this)' "this" 将设置为调用 "if statement" 所在函数的对象。
function x(){
console.log(this); //shows the global object (window, if run in a browser)
}
var y = {
fruit:"apple",
x:function(){
console.log(this); // shows the calling object
}
};
x();
y.x();
我正在尝试简化我每次都使用的一行代码:
if (we_need_to_exit) { op(); return; }
我有没有机会定义一个函数,像这样:
function my_return (x) {
x.op();
x.return;
}
并像这样使用它:
if (we_need_to_exit) { my_return(this); }
是否可以定义这样的函数?
编辑
最适合 in my case 的简单解决方案如下:
if (we_need_to_exit) { return op(); }
不,一旦你调用 my_return
,my_return
内的 return
就是从 my_return
.
你可以通过以下方式做你想做的事:
if (we_need_to_exit) { return my_fn(this); }
你的 my_fn
将是:
function my_fn (x) {
x.op();
// return any value you want, or use "return;" or just omit it
}
为什么这行不通:
function my_return (x) {
x.op();
x.return; //[1] [2]
}
//-----and use it like-------------------
if (we_need_to_exit) { my_return(this); //[3]}
- 表示在x上创建return 属性,不会return.
- 将
x.return;
替换为return;
将 return 来自函数,而不是来自它的调用之外(在 [3],这是你的 objective)。 'my_return(this)' "this" 将设置为调用 "if statement" 所在函数的对象。
function x(){ console.log(this); //shows the global object (window, if run in a browser) } var y = { fruit:"apple", x:function(){ console.log(this); // shows the calling object } }; x(); y.x();