我有一个如下的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不是函数”的背景,如果这是一个愚蠢的问题,请道歉。
答案 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是一个变量。当你调用这个函数时,搜索算法正在从内部范围搜索到外部范围。