変数が関数内で宣言されたときに異なる値を持つ理由を説明できますか?

王林
リリース: 2024-02-12 17:30:06
転載
353 人が閲覧しました

変数が関数内で宣言されたときに異なる値を持つ理由を説明できますか?

質問内容

初めてコードを書きます。ただし、変数 left の値は常に -1 です。

リーリー

このようにコードを変更すると、左側の値が右側になります。

リーリー

違いは何ですか? ?教えてください。

変数 left は再帰後に異なる値を持つべきだと思いましたが、そうではありません。

解決策

最初のケースでは、left 変数は内部ラムダのクロージャ内にあります。これは、関数の観点からは変数が「グローバル」であることを意味します。ラムダは再帰的であるため、各呼び出しは以前の値を破棄します。前の値は、(再帰の)最後には -1 の値(再帰の基本ケース)を持ち、それ以降(再帰から戻るとき)は変更されません。

2 番目のケースでは、left はローカル変数であり、呼び出しごとにスタックにプッシュまたはポップされます。

以上が変数が関数内で宣言されたときに異なる値を持つ理由を説明できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!