【问题标题】:Conventions for "function expression" declaration“函数表达式”声明的约定
【发布时间】:2014-05-31 09:25:20
【问题描述】:

我是 js 新手,有时我很难习惯它的代码约定。所以我有一个问题,我应该如何声明函数表达式?看看我的代码,是不是我做的对,还是有更好的做法?

function onAddButtonClick() {
    var engWord = document.getElementById('engWord'),
        japWord = document.getElementById('japWord'),
        engVal = engWord.value,
        japVal = japWord.value,
        engExpr = (engVal !== ""),
        japExpr = (japVal !== ""),
        duplicateNum,
        checkImg,
        numOfWords;

    duplicateNum = (function () {
        var i,
            pair;

        for (i = 0; i < dictionary.length; i++) {
            pair = dictionary[i];
            if (pair.eng === engVal && pair.jap === japVal) {
                return 3;
            } else if (pair.jap === japVal) {
                return 2;
            } else if (pair.eng === engVal) {
                return 1;
            }
        }
        return 0;
    }());

    //remove focus from inputs
    engWord.blur();
    japWord.blur();
    ...
}

提前致谢。

【问题讨论】:

    标签: javascript conventions function-expression


    【解决方案1】:

    你做得很好。在这种情况下,在语法上不需要使用开头的(,但它会向代码的人类读者发出很棒的警告,说明正在发生的事情。约定会有所帮助。

    最后,调用parens () 可以进入关闭) 的内部或外部。 Doug Crawford 建议使用内部,并且许多短绒都会检查这一点。尽管他声称 狗球1,但这并不重要。

    顺便说一句,函数表达式被声明然后立即运行的想法称为IFFE -- Immediately Invoked Function Expression

    【讨论】:

    • 感谢您的回答。混合变量声明和初始化怎么样,但把“函数表达式”初始化分开,就像我的例子一样?
    • 归结为我的具体案例。我使用了很多IFFEs,但我也知道我会移动我的所有函数并有时给它们特定的名称。命名函数的优点是名称可以是函数作用的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多