試圖解決一些我正在查看的JavaScript代碼。我看到這樣的事情:將數字乘以一個數字
var myVariable = "X";
var result = myVariable * 6;
來自C#背景,這對我來說是新的。有人能夠快速介紹一下這裏發生了什麼嗎?我猜結果將等於字母表中的字母乘以6的位置,我會是正確的嗎?
試圖解決一些我正在查看的JavaScript代碼。我看到這樣的事情:將數字乘以一個數字
var myVariable = "X";
var result = myVariable * 6;
來自C#背景,這對我來說是新的。有人能夠快速介紹一下這裏發生了什麼嗎?我猜結果將等於字母表中的字母乘以6的位置,我會是正確的嗎?
我猜測,結果是等於該字母位置字母乘以6,我是否正確?
編號JS是弱類型的,並且隱式地指定值以匹配運算符(此處爲multiplicative one)。在這種情況下,字符串"X"
將爲converted to a number - 因爲它不是有效的數字文字,因此導致NaN
。 result
然後也將是NaN
。
要獲得字母表中的位置,你會使用parseInt
function與非十進制基數(parseInt("X", 36)-10
)或charCodeAt
string method("X".charCodeAt(0)-65
)。
'「a」.charCodeAt(0)-65 // 32'我不認爲有第32個字母表... – 2013-03-24 22:31:01
@Derek:這是ASCII碼。對於小寫字母,你需要減去97. – Bergi 2013-03-24 22:48:54
結果將是NaN
,因爲「X」不是數字;將一個字符串乘以一個數字總是會返回NaN
。
的更多信息:http://es5.github.com/
*運算符執行乘法,產生它的操作數的乘積。乘法是可交換的。由於精度有限,ECMAScript中的乘法並不總是關聯的。
浮點乘法的結果是由IEEE 754二進制雙精度算術的規則進行:
- 如果操作數是NaN,則結果是NaN。
如果你想信在英文字母的位置,儘量this:
myVariable.toUpperCase().charCodeAt(0) - 65;
'NaN'對於那些不知道的人來說不是一個數字。 – 2013-03-24 22:16:25
'Array(16).join(6 *'X')+'蝙蝠俠!'是那些不知道的蝙蝠俠歌曲。 – 2013-03-24 23:31:50
@Tomás - 不錯的一個! – 2013-03-24 23:33:51
我認爲最簡單的解決方案有一個字符串s
重複n
時間是:
Array(n+1).join(s)
重讀你的問題:通過n
繁衍s
的第一個字母中charCode:
s.charCodeAt(0) * n
要獲得對應於該乘以charcode的字符:
String.fromCharCode(s.charCodeAt(0) * n)
試一下,看看結果是什麼! – Bergi 2013-03-24 22:14:55
按F12鍵入「x」* 6,查看結果NaN。開發人員控制檯是最終方便的工具。 – 2013-03-24 22:15:51
@fastreload或節點。 ;) – beakr 2013-03-24 22:16:12