像大家一直在說的那樣,prompt
返回一個字符串,因此需要進行轉換。有許多方法可以做到這一點,其中一些已經提到:
parseInt('123')
parseFloat('123')
Number('123')
這些可能是最常見的,並根據上下文,也很可能是這樣做的最清晰和直觀的方式。還有一些將字符串轉換爲數字的非常簡潔而有趣的方法,具體取決於您想要的數字類型。例如,在字符串中的數字轉換爲浮動,您可以用+
運營商前綴是:
+'1.23'
這似乎真的直覺,特別是因爲4 + '1.23'
實際上將返回41.23
。發生什麼了?那麼,+
運算符在用作unary operator(即它的右側只有一個操作數)時,將始終將操作數值轉換爲數字。比較這兩個(嘗試他們在JavaScript控制檯):
4 + '1.23' // returns 41.23
4 + +'1.23' // returns 5.23; the second + is a unary operator
在人爲的例子,如這個,真的讀不太好,所以你可能不希望使用這一招到處。但是,在你的代碼,它讀取相當不錯:
var age = +prompt("What's your age?")
var dog = age + 7;
var leapyear = age/4;
var plusFive = age + 5;
如果你瞭解一元加上運營商的工作(這真不是火箭手術),那麼你可以得到一些不錯的簡潔,但完全可以理解的結果。
一元運算符+
將始終將該值轉換爲Number
即浮點數。現在,你可能希望不是整數,在這種情況下,你可以使用bitwise not operator兩次,像這樣:
4 + ~~'1.23' // returns 5; note the double operator
該操作員首先將值轉換爲整數,然後返回值的bitwise complement,這意味着所有這些位被反轉。使用它兩次意味着我們得到補碼的補碼,即原始值,但這次是一個整數而不是一個浮點數。
希望這是信息!
var age = parseInt(提示(「你的年齡是?」));' –