为什么下面的代码没有定义虚函数?
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调查问卷时遇到了这个问题。
答案 0 :(得分:3)
当您将函数定义放在if()
中时,它是命名函数表达式。名称的范围只是函数的主体,而不是周围的范围。它类似于:
var foo = function dummyFunction() {};
这在外部范围内定义foo
,但dummyFunction
仅在函数体中定义。
我不确定你为什么这样做,但写作方式是:
if (var dummyFunction = function() {}) {
答案 1 :(得分:0)
喜欢这个吗?
var dummyFunction;
if(typeof dummyFunction !== 'Function'){
dummyFunction = function(){}
}