すみません、new の後の mm 関数に括弧を追加するか追加しないの違いは何ですか?同じ結果が得られるのはなぜですか?内部の原理については上級専門家に質問してください。
まず、この種の基本的な質問については、公式ドキュメントを参照することを学ぶ必要があります。 ドキュメントには詳細な手順が記載されています: new foo は、パラメータを渡さずにのみ使用できる new foo() と同等です。 もちろん、js には落とし穴があるので、ドキュメントを完全に信頼することはできません。 。 それでは何が違うのでしょうか?この優先順位の概要に詳細な説明があります: new (パラメーターリストあり) の優先順位は 19、new (パラメーター分離なし) の優先順位は 18 なので、 new foo() が最初に実行されます
最後に、私は少し前に、新しい f()、新しい f、新しい f.g()、新しい f().g() などをテストしたかなり嫌な面接の質問についての記事を見た記憶があります。優先度の計算問題、自分で検索できます
MDNを参照
新しいコンストラクター[([引数])]
パラメータを渡す必要がない場合、括弧()はオプションです
()
var mm = 関数(val){
}var a = 新しい mm(1) ;console.log(a)var b = 新しい mm ;console.log(b)
コンストラクターがパラメーターを必要としない場合、かっこを追加する場合と追加しない場合に違いはありません。
まず、この種の基本的な質問については、公式ドキュメントを参照することを学ぶ必要があります。
ドキュメントには詳細な手順が記載されています: new foo は、パラメータを渡さずにのみ使用できる new foo() と同等です。
もちろん、js には落とし穴があるので、ドキュメントを完全に信頼することはできません。 。
それでは何が違うのでしょうか?この
優先順位の概要に詳細な説明があります: new (パラメーターリストあり) の優先順位は 19、new (パラメーター分離なし) の優先順位は 18 なので、 new foo() が最初に実行されます
最後に、私は少し前に、新しい f()、新しい f、新しい f.g()、新しい f().g() などをテストしたかなり嫌な面接の質問についての記事を見た記憶があります。優先度の計算問題、自分で検索できます
MDNを参照
パラメータを渡す必要がない場合、括弧
()
はオプションですvar mm = 関数(val){
リーリー}
var a = 新しい mm(1) ;
console.log(a)
var b = 新しい mm ;
console.log(b)
コンストラクターがパラメーターを必要としない場合、かっこを追加する場合と追加しない場合に違いはありません。