Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptは参照渡しまたは値渡しの言語ですか?


Javascriptは値渡し言語です。ただし、オブジェクトの場合、値はそれらの参照です。したがって、たとえば、intをパラメーターとして関数に渡し、関数内でその値をインクリメントした場合、その値は呼び出し元のコンテキストで更新されません-

let i = 0;
function increment(x) {
   x = x + 1
   console.log(x)
}
increment(i)
console.log(i)

出力

1
0

オブジェクトを渡し、関数のコンテキストでそのオブジェクトの参照を更新しても、オブジェクトには影響しません。ただし、オブジェクトの内部を変更すると、それがオブジェクトに反映されます。

let obj = {'foo': 'bar'};
function updateRef(x) {
   // x's local ref gets updates, doesn't affect obj
   x = {}
}
function addHelloWorld(y) {
   // Add new prop to object referenced by y
   y['hello'] = 'world';
}
console.log(obj)
updateRef(obj)
console.log(obj)
addHelloWorld(obj)
console.log(obj)
によって参照されるオブジェクトへのプロパティ

出力

{ foo: 'bar' }
{ foo: 'bar' }
{ foo: 'bar', hello: 'world' }

オブジェクト参照の変更はオブジェクトに影響を与えなかったことに注意してください。ローカル変数xが再割り当てされました。ただし、2番目の関数では、yはobjオブジェクトを参照し、そのオブジェクトの内部状態を変更していました。これにより、元のオブジェクトが変更されました。


  1. JavaScriptのRegExpオブジェクト。

    RegExpオブジェクトは、テキストの一部を検索および抽出することにより、一部のテキストのパターンマッチングに使用されます。 RegExpオブジェクトは、regexpコンストラクターまたはリテラル構文のいずれかを使用して作成できます。 以下は、JavaScriptのRegExpオブジェクトのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport"

  2. JavaScriptのオブジェクト初期化子

    オブジェクト初期化子は、新しく作成されたオブジェクトを初期化できるようにする式です。これは、プロパティ名の0個以上のペアと、中括弧{}で囲まれたオブジェクトの関連する値のコンマ区切りのリストです。 以下は、JavaScriptのオブジェクト初期化子のコードです。 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=d