私が見ているJavaScriptコードを回避しようとしています。私はこのようなものを見ています:
var myVariable = "X";
var result = myVariable * 6;
C#のバックグラウンドから来ているので、これは私にとって新しいことです。誰かが私にここで何が起こっているのかについての簡単な入門書を教えてもらえますか?結果はアルファベットの文字の位置に6を掛けたものに等しいと思いますが、正しいでしょうか?
私が見ているJavaScriptコードを回避しようとしています。私はこのようなものを見ています:
var myVariable = "X";
var result = myVariable * 6;
C#のバックグラウンドから来ているので、これは私にとって新しいことです。誰かが私にここで何が起こっているのかについての簡単な入門書を教えてもらえますか?結果はアルファベットの文字の位置に6を掛けたものに等しいと思いますが、正しいでしょうか?
結果はNaN
、「X」が数値ではないためです。文字列に数値を掛けると、常にが返されNaN
ます。
*演算子は乗算を実行し、そのオペランドの積を生成します。乗算は可換です。精度が有限であるため、ECMAScriptでは乗算が常に連想的であるとは限りません。
浮動小数点乗算の結果は、IEEE754バイナリ倍精度演算の規則によって管理されます。
- いずれかのオペランドがNaNの場合、結果はNaNになります。
英語のアルファベットで文字の位置を取得したい場合は、これを試してください:
myVariable.toUpperCase().charCodeAt(0) - 65;
結果はアルファベットの文字の位置に6を掛けたものに等しいと思いますが、正しいでしょうか?
いいえ。JSは弱い型付けであり、値は演算子(ここでは乗法)に一致するように暗黙的に型キャストされます。この場合、文字列"X"
は数値に変換されます。これは、有効なNaN
数値リテラルではないためです。そのresult
場合NaN
も同様になります。
アルファベットの位置を取得するには、10進数以外の基数()または文字列メソッド( )を指定したparseInt
関数を使用します。parseInt("X", 36)-10
charCodeAt
"X".charCodeAt(0)-65
文字列s
を何n
度も繰り返す最も簡単な解決策は次のとおりです。
Array(n+1).join(s)
もう一度質問を読んでください:の最初の文字の文字コードに:を掛けるにs
はn
:
s.charCodeAt(0) * n
その乗算された文字コードに対応する文字を取得するには:
String.fromCharCode(s.charCodeAt(0) * n)