質問
初歩的な質問なのですが、
textContent プロパティに number型の値は代入できるのでしょうか。
x.textContent = String(number型)としなくてはいけない気がしています。
よろしくお願いいたします。
また、型変換不要なのであれば、JSの型は必要なタイミングがあるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
暗黙の型変換
通称「暗黙の型変換」と呼ばれる仕組みは全てに適用する決まりがあるわけではないので、、該当機能が型変換を行うかは仕様を確認する必要があります。
DOMString 型
Node.prototype.textContent
は「DOMString
型」です。
「DOMString
型」は ToString
します。
ToString
はString 型へ型変換を行います。
ReferenceError
String(x.textContent) = number型としなくてはいけない気がしています。
そのコードが成立しないことは、実行すれば分かります。
JavaScript
1String(document.body.textContent) = 1; // ReferenceError: Invalid left-hand side in assignment
「String 値」に「Number 値」を代入できません。
JavaScript
1'0' = 1; // SyntaxError: Invalid left-hand side in assignment
textContentに String 値を代入するならば、代入前に型変換を行わなければなりません。
JavaScript
1document.body.textContent = String(1);
Re: sskhauwnat さん
投稿2019/12/14 07:02
総合スコア18189
0
ベストアンサー
String(x.textContent) = number型
としなくてはいけない気がしています
javascript の代入では 暗黙の型変換がありますので、キャスト演算は不要です。
逆説的に考えると、他の言語でいうキャスト演算が発生することを念頭にコードを書く必要があります。
※ご質問に示されるコードは x.textContent = String(number型)
と解釈させていただきました。
型変換不要なのであれば、JSの型は必要なタイミングがあるのでしょうか。
演算子を使ったり、関数の引数に渡したり、常に暗黙の型変換が発生しうると考えてください。上記リンクの他、「javascript イディオム」といったワードで検索するとより多くの事例を確認できます。
追記)
「型は必要なタイミング」
演算結果に影響します。
javascript
1 "1" + "2" // => "12" 2 1 + 2 // => 3
投稿2019/12/13 21:26
編集2019/12/13 21:34総合スコア5434
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
JavaScriptは動的型付け言語なので、細かな動きは私もわかっていませんが「代入したタイミングで」型が決定するイメージで書いてます。
静的型付け言語ばかりやっててJavaScriptをやると質問者さんのように「これいいんかい」と思うようなことが多いので違和感がありますが、代入の際は暗黙的に型変換をしてくれるので、不要となります。
私は数年やっても上記の違和感が取れないため、業務では仕方がないですが個人ではtypescriptを使っています。静的型付けになったJavaScriptみたいなものです。
投稿2019/12/13 22:28
編集2019/12/13 22:29総合スコア105
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 07:43 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 07:46