ホームページ >バックエンド開発 >PHPチュートリアル >JavaScriptのスコープの問題
PHPコード:
リーリー出力
リーリーJSコード:
リーリー出力:
リーリー私が欲しいのは、PHPの結果と同様に、関数内の処理が関数の外の結果に影響を与えないことです。その理由も知りたいです
。PHPコード:
リーリー出力
リーリーJSコード:
リーリー出力:
リーリー私が欲しいのは、PHPの結果と同様に、関数内の処理が関数の外の結果に影響を与えないことです。その理由も知りたいです
。
こんにちは = $key.slice();
関数のパラメータは配列であり、配列は js で参照によって渡されます。 。関数内で let を使用して、配列への参照を別の変数に割り当てる場合。実際、hello と $key は両方とも同時に値を指します。この場合、値は長さ 2 の配列です。したがって、任意の変数に対してプッシュまたは他の操作を実行すると、実際に変更されるのは、両方の変数が同時に指す値です。
PHP のデフォルトの受信パラメーターは参照ではなくコピーですが、JS は常に参照を渡すため、変更するには 1 つをコピーするだけで済みます
リーリー
問題は参照渡しです。実はこれ、彼がPHPに登場するんです。
リーリー違いは、js 配列もオブジェクトであり、参照によって渡されることです。 「クローンオブジェクト」で検索できます。この質問に対する答えは上で与えられています。
phpを使用してパラメータを渡す場合、&を追加すると参照渡しを意味し、jsコードが出力されるときと同じになります