javascript:重写(而不仅仅是定义)if语句中的函数

javascript:重写(而不仅仅是定义)if语句中的函数,javascript,Javascript,我有以下javascript var f = function() { ... }; if (x === 1) { // redefine f. f = function() { ... }; } 那代码有效吗? 换句话说,我可以在实际编写代码的if语句中重新定义javascript函数 我为此感到担心: 是的,你能做到 f = function() { ... }; 不是函数声明,它是一个函数表达式(分配给f),因此其他问题中提到的问题在这里

我有以下javascript

var f = function() { ... };
if (x === 1) {
    // redefine f.
    f = function() { 
       ...
    };
}
那代码有效吗? 换句话说,我可以在实际编写代码的if语句中重新定义javascript函数

我为此感到担心: 是的,你能做到

f = function() { 
   ...
};
不是函数声明,它是一个函数表达式(分配给
f
),因此其他问题中提到的问题在这里不适用

只提升变量和函数声明。

是的,您可以这样做

f = function() { 
   ...
};
不是函数声明,它是一个函数表达式(分配给
f
),因此其他问题中提到的问题在这里不适用


只挂起变量和函数声明。

非常感谢,请详细说明您的答案。我想使用这种方法,但我仍然担心吊装可能会对其产生什么影响……没有更多的话要说。仅提升函数和变量声明。您仅有的声明是代码开头的
var f
。赋值只有在代码中达到时才会发生。是的,但是我再次定义了函数f()(在if中)您如何知道这不会引起问题?您没有定义函数
f
(您从未定义过)。您正在为变量
f
赋值,该变量恰好是一个函数。函数是JavaScript中的第一类对象,因此它与分配任何其他值相同,例如
f=42。如果您不知道函数声明和函数表达式之间的区别,请看一下这个问题:。非常感谢。请详细说明您的答案。我想使用这种方法,但我仍然担心吊装可能会对其产生什么影响……没有更多的话要说。仅提升函数和变量声明。您仅有的声明是代码开头的
var f
。赋值只有在代码中达到时才会发生。是的,但是我再次定义了函数f()(在if中)您如何知道这不会引起问题?您没有定义函数
f
(您从未定义过)。您正在为变量
f
赋值,该变量恰好是一个函数。函数是JavaScript中的第一类对象,因此它与分配任何其他值相同,例如
f=42。如果您不知道函数声明和函数表达式之间的区别,请看一下这个问题:。@Kriem我认为您弄错了,这是一个不同的问题。它关注的是提升和重新定义,并处于一种“如果”状态。我现在看到了这一点。道歉。我的假设太快了。@Kriem不用担心。。。发生了。。。非常感谢。@Kriem你能从顶部拿出信息“这个问题可能已经有答案了”。。。正如我们所同意的那样,它不是correct@Kriem我想你弄错了,这是另一个问题。它关注的是提升和重新定义,并处于一种“如果”状态。我现在看到了这一点。道歉。我的假设太快了。@Kriem不用担心。。。发生了。。。非常感谢。@Kriem你能从顶部拿出信息“这个问题可能已经有答案了”。。。我们一致认为这是不对的