ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのarguments関数を詳しく解説(例付き)
JavaScript の関数は、いくつかの点で他のオブジェクト指向言語とは異なります。
#関数のオーバーロードはありません
function foo(num) { console.log(num + 100) } function foo(num) { console.log(num + 200) } foo(100); // 300同じ名前の 2 つの関数が js で定義されている場合、その名前は後で定義された関数にのみ属します。 2. 引数クラスの配列関数の引数オブジェクトは、すべての (アロー以外の) 関数で使用できるローカル変数であり、配列のようなオブジェクトです。引数オブジェクトを使用すると、関数内で関数の (実際の) パラメーターを参照できます。
function foo() { console.log(arguments); } foo(1, "foo", false, {name: "bar"}); // [1, "foo", false, object]
function foo() { console.log(typeof arguments); } foo(1, "foo", false, {name: "bar"}); // object
#3. 引数の属性
lengthfunction foo(num1, num2, num3) { console.log(arguments) } foo(1); // [1]
length 属性は渡すことを示します。関数が宣言されたときの仮パラメータの数ではなく、関数の実際のパラメータの数を入力します。
calleecallee は関数自体を表し、関数内の callee を通じてそれ自体を呼び出すことができます。
4. 真の配列への変換
function sayHi() { console.log(Array.prototype.slice.call(arguments, 0)) } sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
function sayHi() { console.log(Array.prototype.splice.call(arguments, 0)); } sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
function sayHi() { console.log(Array.from(arguments)); } sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
function sayHi(...arguments) { console.log(arguments); } sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
// 严格模式 function foo(a, b) { "use strict"; console.log(a, arguments[0]); a = 10; console.log(a, arguments[0]); arguments[0] = 20; console.log(a, arguments[0]); b = 30; console.log(b, arguments[1]) } foo(1); 输出: 1 1 10 1 10 20 30 undefined // 非严格模式 function foo(a, b) { console.log(a, arguments[0]); a = 10; console.log(a, arguments[0]); arguments[0] = 20; console.log(a, arguments[0]); b = 30; console.log(b, arguments[1]); } foo(1); 输出: 1 1 10 10 20 20 30 undefined
以上がJavaScriptのarguments関数を詳しく解説(例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。