首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部函数声明安全吗?

内部函数声明安全吗?
EN

Stack Overflow用户
提问于 2011-01-24 18:08:39
回答 3查看 328关注 0票数 0
代码语言:javascript
复制
function outer(x) {
    function inner(y) {
        if (y) console.log(y);
        else console.log(42);
    }
    inner(x + 1);
}
outer(5); // expect a logging of '6'
inner(); // expect a Reference Error

我知道它应该做什么,我希望它能做到这一点,但在声明内部函数时,有没有什么跨浏览器的怪癖或副作用值得注意呢?

编辑

通过安全,我的意思是,它们是否可能污染全局名称空间,或者不被视为声明它们的函数的本地。

/Edit

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-24 18:11:38

Afaik编号IE在命名函数表达式方面存在问题,例如:

代码语言:javascript
复制
var inner = function inner2() {

}

但其他一切都应该没问题。

票数 1
EN

Stack Overflow用户

发布于 2011-01-24 18:12:33

这是常规的ECMAScript语法。它允许闭包和“内部函数”。函数内的语句(函数声明和变量)的作用域在该函数内。

在您的示例中,函数inner只存在于outer的作用域中;除了尝试调用inner()时的引用错误之外,其他任何错误都应该被视为“怪癖”。

更新: Found a question可能与此相关。

票数 0
EN

Stack Overflow用户

发布于 2011-01-24 18:14:42

我不明白你说的“安全”是什么意思。在您的示例中,无法从outer()外部调用inner()。如果“安全”-意味着只有函数可见性,那么你的是对的,它是安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4780769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档