ホームページ > 記事 > ウェブフロントエンド > jsにおける関数パラメータの実装原理
jsの関数の仮パラメータと実パラメータの実装が異なる場合、パラメータを渡す際に実パラメータと仮パラメータを一致させるにはどうすればよいでしょうか?ここで、js でのパラメーターの実装原則を検討する必要があります。
JS で渡されるパラメーターが異なる可能性があることは誰もが知っています。たとえば、次の関数があります。
<script type="text/javascript"> function one(a,b,c) { this.x = a; console.log(a); } one(1);</script>
渡す数値は 1 だけですが、仮パラメーターには 3 つの abc があります。これは明らかに正しくありませんね。
このときbとcを見るとunknownと表示されます。 ps: たとえば、console.log(b) です。
もちろん、この2つの数字は最初から存在しませんでした。どうすれば見つけられますか?
それでは、実パラメータと仮パラメータが一致しない場合、JS はこの状況をどのように実装するのでしょうか?コードの一部を見てみましょう:
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title>JavaScript中函数的形参和实参的区别</title></head><body> <script type="text/javascript"> function one(a,b,c) { return one.length; } function two(a,b,c,d,e,f,g){ return arguments.length; } console.log(one()); //3 console.log(two()); //0 </script></body></html>
ここでは、1 つの関数で one.length を返し、2 つの関数で arguments.length を返します。出力 one() が仮パラメータの数である one.length を返し、argument.length が実際のパラメータの数であることに気づいたかもしれません。
一瞬で分かりますよね?
arguments[0] を使用して実際のパラメータの番号を取得することもできます。
しかし、なぜ仮パラメータのない数値を配列のように表現できるのでしょうか?あなたが乙女座で、すべてにおいて対称性を要求していることは知っています。仮パラメータが配列でない限り、この方法で使用できます。それ以外の場合、関数では仮パラメータの名前を使用して実際のパラメータを取得することしかできません。
C# と Java では、パラメーターの型と数の要件が JS と比べて非常に厳しく、まったく一致しない場合はエラーが報告されます。そして、この設計のおかげで、JS は比較的柔軟な言語になることができます。
上記のメソッドは、仮パラメータと実パラメータの数を強制せずに、JS が依存する実装です。同じ型については、JS ではどの型でも var a =... と記述できますが、型の用途は何でしょうか? JS が弱い型付け言語と言われるのはこのためです。
関連する推奨事項:
以上がjsにおける関数パラメータの実装原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。