Javascript 公约;函数表达式";宣言

Javascript 公约;函数表达式";宣言,javascript,conventions,function-expression,Javascript,Conventions,Function Expression,我是js新手,有时我很难习惯它的代码约定。所以我有一个问题,我应该如何声明函数表达式?看看我的代码,我是如何做到的,还是有更好的实践 function onAddButtonClick() { var engWord = document.getElementById('engWord'), japWord = document.getElementById('japWord'), engVal = engWord.value, japVa

我是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();
    ...
}
函数onAddButtonClick(){ var engWord=document.getElementById('engWord'), japWord=document.getElementById('japWord'), engVal=engWord.value, japVal=japWord.value, engExpr=(engVal!=“”), japExpr=(japVal!=“”), duplicateNum, 检查, 新词; duplicateNum=(函数(){ var i, 一对 对于(i=0;i
提前谢谢。

你做得很好。使用开头的
在这种上下文中在语法上不是必需的,但是它对代码的人类读者发出了关于正在发生的事情的一个很好的警告

最后,调用方可以进入关闭方的内部或外部。道格·克劳福德(Doug Crawford)建议使用内部和许多过梁来检查这一点。尽管他声称有狗球,但这真的没关系


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

Thx,这是您的答案。如何混合变量声明和初始化,但将“函数表达式”初始化分开,就像在我的例子中一样?对我来说,这取决于具体的情况。我使用了很多
IFFE
s,但我也知道我会移动所有函数,并有时给它们指定特定的名称。命名函数的优点是名称可以作为函数功能的文档。