[解決済み] immutableとはどういう意味ですか?
質問
文字列が不変であるということは、つまり (JavaScriptを想定してみます)
var str = 'foo';
alert(str.substr(1)); // oo
alert(str); // foo
文字列に対してメソッドを呼び出すと、変更後の文字列は返されますが、初期文字列は変更されないということでしょうか?
文字列がmutableであった場合、2番目の
alert()
が返されるということでしょうか。
oo
も返すのでしょうか?
どのように解決するのですか?
オブジェクトを一度インスタンス化すると、そのプロパティを変更することはできない、ということです。 最初の警告では、foo を変更していません。 新しい文字列を作成しているのです。 このため、2つ目のアラートでは oo の代わりに "foo" と表示されます。
文字列に対してメソッドを呼び出すと を呼び出すと、変更した文字列を返しますが 文字列は変更されませんが を変更しないということでしょうか?
はい、そうです。 一度作成された文字列は何も変更することができません。 さて、これは新しい文字列オブジェクトを割り当てられないという意味ではありません。
str
変数に新しい文字列オブジェクトを代入できないということではありません。 strが参照している現在のオブジェクトを変更することができないだけです。
もし文字列が変更可能であった場合 2番目のalert()はooを返すということでしょうか? を返すということでしょうか?
技術的には、substringメソッドは新しい文字列を返すので、そうではありません。 オブジェクトをミュータブルにしても、メソッドは変わりません。 mutableにするということは、技術的には、substringが新しいものを作成する代わりに、元の文字列を変更するようにすることができることを意味します。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] javascript:void(0)」とは何ですか?
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] JavaScriptで、ある文字列が別の文字列の中に出現するすべてのインデックスを見つけるにはどうすればよいですか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?