ホームページ  >  記事  >  バックエンド開発  >  JavaScriptのスコープの問題

JavaScriptのスコープの問題

WBOY
WBOYオリジナル
2016-12-01 00:56:32845ブラウズ

PHPコード:

リーリー

出力

リーリー

JSコード:

リーリー

出力:

リーリー

私が欲しいのは、PHPの結果と同様に、関数内の処理が関数の外の結果に影響を与えないことです。その理由も知りたいです

返信内容:

PHPコード:

リーリー

出力

リーリー

JSコード:

リーリー

出力:

リーリー

私が欲しいのは、PHPの結果と同様に、関数内の処理が関数の外の結果に影響を与えないことです。その理由も知りたいです

こんにちは = $key.slice();

関数のパラメータは配列であり、配列は js で参照によって渡されます。 。関数内で let を使用して、配列への参照を別の変数に割り当てる場合。実際、hello と $key は両方とも同時に値を指します。この場合、値は長さ 2 の配列です。したがって、任意の変数に対してプッシュまたは他の操作を実行すると、実際に変更されるのは、両方の変数が同時に指す値です。

PHP のデフォルトの受信パラメーターは参照ではなくコピーですが、JS は常に参照を渡すため、変更するには 1 つをコピーするだけで済みます

リーリー

問題は参照渡しです。実はこれ、彼がPHPに登場するんです。

リーリー

違いは、js 配列もオブジェクトであり、参照によって渡されることです。 「クローンオブジェクト」で検索できます。この質問に対する答えは上で与えられています。

phpを使用してパラメータを渡す場合、&を追加すると参照渡しを意味し、jsコードが出力されるときと同じになります

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