if条件中的函数定义未在javascript中定义

时间:2014-07-15 06:27:20

标签: javascript

为什么下面的代码没有定义虚函数?

if(function dummyFunction() {}){

}
console.log(dummyFunction); // Throws ReferenceError: dummyFunction is not defined

我问的原因是 - 我把它定义为以下 -

function dummyFunction(){}
console.log(dummyFunction); //This would have worked

BUT:

var xxx = function dummyFunction(){}
console.log(dummyFunction); //This would NOT have worked.

不知怎的,我觉得当我使用if条件时,它应该表现得像第一种情况而不是第二种情况。我无法理解为什么没有赋值给变量(就像在第二种情况下)我无法通过函数名访问该方法。

更新:我在解决JS调查问卷时遇到了这个问题。

2 个答案:

答案 0 :(得分:3)

当您将函数定义放在if()中时,它是命名函数表达式。名称的范围只是函数的主体,而不是周围的范围。它类似于:

var foo = function dummyFunction() {};

这在外部范围内定义foo,但dummyFunction仅在函数体中定义。

我不确定你为什么这样做,但写作方式是:

if (var dummyFunction = function() {}) {

答案 1 :(得分:0)

喜欢这个吗?

var dummyFunction;
if(typeof dummyFunction !== 'Function'){
  dummyFunction = function(){}
}