我可以在函数中定义一个简单的函数,以便为函数中的不同情况进行封装和重用吗?
Posted
技术标签:
【中文标题】我可以在函数中定义一个简单的函数,以便为函数中的不同情况进行封装和重用吗?【英文标题】:Can I define a simple function within a function in order to encapsulate and reuse for different cases in the function? 【发布时间】:2020-03-24 14:18:41 【问题描述】:假设我有一个 logOut() 函数,并且用户可以通过几种不同的方式之一登录。所以在 logOut() 函数中,我可能会检查 Facebook auth 用户上下文。如果存在,那么我将执行代码以将用户从 Facebook 注销,然后导航到登录主页。同样,用户可能通过 Apple 登录,我将以类似的方式处理这种情况。是否可以在此 logOut() 函数的开头定义某种类型的函数变量,例如:
const navigateHome = props.navigation.navigate('LoginHome');
然后根据代码中的大小写重复使用 navigateHome 变量作为指令,如:
if(loggedInViaFacebook)
navigateHome;
else if(loggedInViaApple)
navigateHome;
这是一个非常简单的示例,但我只是想了解这在概念上是否可行,以便我可以将其作为一种技术加以利用。
【问题讨论】:
是的,您可以将该函数作为局部变量放入您的logOut
函数中,但是不,您需要实际编写一个 function navigateHome() …
然后 调用 navigateHome();
其他地方。
Declaring functions in javascript的可能重复
@AlexeiLevenkov 不,不是那个
@Bergi 在我看来,OP 似乎还不能定义任何函数......那篇文章展示了很多方法......确实,也许 OP 要求别的东西 - 因为你明白什么其实问题是考虑edit澄清...
@AlexeiLevenkov 提议的副本肯定有很多函数示例,但任何其他 js 主题也是如此。 OP 没有询问两种函数语法之间的区别,他似乎根本不知道如何定义函数以及将代码放入赋值中的区别是什么。
【参考方案1】:
函数可能包含其他函数。它们可以在同一范围内调用(假设您使用的是const
而不是var
)。
function someParentFunction()
const navigateHome = function()
props.navigation.navigate('LoginHome');
if(loggedInViaFacebook)
navigateHome();
else if(loggedInViaApple)
navigateHome();
【讨论】:
【参考方案2】:当然可以。您可以像下面这样全局声明您的函数:
const navigateHome = () => props.navigation.navigate('LoginHome');
const logoutFB = () => //doSomething with multiple line;
const pingIP = function (ip) ...;
并且可以在任何地方使用
if(loggedInViaFacebook)
navigateHome();
else if(loggedInViaApple)
logoutFB();
pingIP();
【讨论】:
OP 确实不想要一个全局声明的函数,他明确要求“在这个 logOut() 函数的开头定义某种类型的函数变量”。【参考方案3】:const navigateHome = () =>
props.navigation.navigate('LoginHome');
或者
function navigateHome()
props.navigation.navigate('LoginHome');
【讨论】:
你是对的。我用错了词。我想说this
可用性。以上是关于我可以在函数中定义一个简单的函数,以便为函数中的不同情况进行封装和重用吗?的主要内容,如果未能解决你的问题,请参考以下文章