他のライブラリやグローバルアイテムとの競合を避けるために、JavaScript の名前を適切に付ける方法を見つけようとしていました。私はいくつかのコードを見直していて、JavaScript に関して理解できないことに気付きました。実際には、質問の仕方さえ知らないので、不自然なコード例をいくつか使用します。
var varFuncTest = (function(){
_funcTest = function(params){
return "These are the params that were passed in: " + params;
};
return _funcTest;
})();
console.log(varFuncTest("params params params"));
出力: 渡されたパラメータは次のとおりです: params params params
このコードを実行すると、期待どおりに動作しますが、これは、変数を宣言したときに、特殊な関数を構築して返す関数を () でラップし、その後すぐに () を追加したためです。関数呼び出しをログに記録すると、正しい文字列が出力されます。
余分な () のセットを最後から削除すると、訓練を受けていない私の目には不要に見えたため、ログには文字列ではなくオブジェクト タイプが出力されます。
var varFuncTest = (function(){
_funcTest = function(params){
return "These are the params that were passed in: " + params;
};
return _funcTest;
});
console.log(varFuncTest("params params params"));
出力: 関数()
ここで何が起こっているのですか?() の 2 番目のセットが必要なのはなぜですか? これが JavaScript 言語の特別な機能である場合、それは何を参照し、そのドキュメントは JavaScript API 内のどこにありますか?
このコードは、最初の例の 6 行目の最後の () を除いたものと同じです。実際には JavaScript 内の実行に影響するため、タイプミスではありません。どちらも、変数に割り当てられている関数オブジェクトを返します。