Javascript:声明函数的最佳实用方法

标签 javascript jquery

过去我工作过的几个网站主要是使用 jquery 进行事件驱动,我通常这样制作我的函数

function abc() {
    //do stuff
}
abc();

function foo() {
    var a = $('.aaa');
    var b = $('.bbb');
    var c = $('.ccc');

    function animal() {
        //do stuff
    }
    animal();

    function pet() {
        //do stuff
    }
    pet();
}
foo();

我知道这不是最佳实践,但是我仍在学习并且它似乎有效。我只是想知道现在应该如何处理这个问题。

最佳答案

实际上,如果您在全局范围内定义所有这些函数(例如全局对象窗口的属性/方法),则示例中的代码(第一个代码)并不是您可以做的最好的事情。我更喜欢使用模块模式 http://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript 我建议您阅读上面链接中的整本书。另一件非常有用的东西 - Stoyan Stefanov 的 JS Patterns 书 http://www.amazon.com/JavaScript-Patterns-Stoyan-Stefanov/dp/0596806752 .

示例的另一种选择(第二个)是自执行函数:

(function () {
   //attaching events and doing all other stuff
}());

自执行函数帮助您在第一次加载页面时做一些初始化工作。您可以附加事件或/和执行其他您应该执行一次的操作。它可以防止您污染全局范围并多次执行 init。

关于Javascript:声明函数的最佳实用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007154/

相关文章:

javascript - 在动态创建的输入上使用向下箭头键将光标移动到下一个输入

javascript - 引用错误: Can't find variable: bootbox

当 web-inspector 关闭时 JavaScript 在 mobile-safari 上失败

javascript - 滚动时所有博客文章都应该淡入淡出,除了第一篇

javascript - 单个 DIV 内有 2 个 onClick 事件

javascript - React.js 中的数据存储在哪里?

javascript - Fabricjs绘图时连接线

jquery - 当名称包含单引号时出现 rel ='imageName' 问题

javascript - 用逗号分割字符串并格式化后显示

javascript - Chrome JavaScript计算行高,位置不同