Jquery document.click中的多个函数定义?

时间:2016-11-25 06:24:46

标签: javascript jquery scope domdocument

我有一个如下的javascript代码:

function foo() {
    console.log("outer function")
}

$(document).click(function(event) {
    if(false) {
        foo();
        function foo() {
            console.log("inner function")
        }
    }
    else{
        foo();
    }
});

在document.click里面的else中调用foo时,抛出foo不是一个函数。

如果我从外部document.click中删除函数定义,那么它可以工作,或者如果我从document.click中删除函数定义,那么它也可以工作。

从结果我可以感受到某种范围问题。由于它是一种脚本语言,它可以采用最新的定义并执行它,但它没有这样做。

任何人都可以解释为什么它被显示为“foo不是函数”的背景,如果这是一个愚蠢的问题,请道歉。

1 个答案:

答案 0 :(得分:1)

var options={
      timestamps: true
 }

var Activity = mongoose.Schema({
  sender_id : {type: String, required: true },
  user_id : {type: String, required: true },
  product_id : {type: String, default : "" },
  type : {type: String, required: true }

},options);

当我运行此代码时。[foo不是函数]没有条件。 你可以认为foo是一个变量。当你调用这个函数时,搜索算法正在从内部范围搜索到外部范围。