据我所知,JS是函数作用域的,而不是作用域的范围,这意味着在(括号内)声明的对象不会创建不同的执行上下文。但是:为什么你不能调用括号内声明的函数?
$('#firstBtn').click(function first() {
console.log("first activated");
});
$('#secondBtn').click(function() {
console.log("second activated");
first();
});
返回Reference Error function is undefined
。函数first
正在括号内声明,所以从技术上讲,它应该可用于其他函数,该函数从它声明的范围调用它。
但这个工程:
var callDat = $('#firstBtn').click(function first() {
console.log("first activated");
});
$('#secondBtn').click(function() {
console.log("second activated");
callDat.first();
});
我的假设是,由于对象是函数,声明一个对象内部的功能可以算作声明不同的功能范围内,即使没有大括号。然而,我希望对此有一个明确的答案。
在'函数first(){''first''是从它自己调用函数时创建的别名。 'first'不能从'first'之外访问。 – Tushar
看看[命名函数表达式揭秘](https://kangax.github.io/nfe/)。命名函数表达式!==函数声明。对于第二个例子,你跳到完全错误的结论。 –
我的不好,第二个例子不起作用。然而,在我提出“解决方案”之前,我已经考虑过这个问题,所以我认为它不应该被删除,虽然可能是为了不让更多的读者分心我的原始查询。 –