ホームページ  >  記事  >  ウェブフロントエンド  >  jsにおける関数パラメータの実装原理

jsにおける関数パラメータの実装原理

不言
不言オリジナル
2018-07-16 14:58:431804ブラウズ

jsの関数の仮パラメータと実パラメータの実装が異なる場合、パラメータを渡す際に実パラメータと仮パラメータを一致させるにはどうすればよいでしょうか?ここで、js でのパラメーターの実装原則を検討する必要があります。

JS で渡されるパラメーターが異なる可能性があることは誰もが知っています。たとえば、次の関数があります。

<script type="text/javascript">
    function one(a,b,c) {        
    this.x = a;
        console.log(a);
    }
    one(1);</script>

渡す数値は 1 だけですが、仮パラメーターには 3 つの ab​​c があります。これは明らかに正しくありませんね。

このとき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関数の実パラメータ、仮パラメータ、クロージャの理解

jsの関数宣言と関数式の分析

以上がjsにおける関数パラメータの実装原理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。