JavaScript是松散类型的语言,大多数时候运算符会自动将值转换为正确的类型,但也有一些情况需要显式进行类型转换。
虽然JavaScript提供了多种方法将数据从一种类型转换为另一种类型,但有两种最常见的数据转换:
将值转换为字符串
将值转换为数字
隐式转换
JavaScript中有各种运算符和函数,它们自动将值转换为正确的类型,如JavaScript中的alert()函数接受任何值并将其转换为字符串。 但是各种运算符会产生类似“+”运算符的问题。
Input: "2" + "3" Output: "23" //这里+运算符代表这种情况下的字符串连接。 //但是“3” - “1”通过使用隐式转换给出输出2。
此代码显示Javascript中的隐式类型转换:
document.write('("3" - "1") = ' + ("3" - "1") + "<br>"); document.write('("3" - 1) = ' + ("3" - 1) + "<br>"); document.write('("3" * "2") = ' + ("3" * "2") + "<br>"); document.write('("3" % "2") = ' + ("3" % "2") + "<br>"); document.write('("3" + null) = ' + ("3" + null) + "<br>"); ("3" - "1") = 2 ("3" - 1) = 2 ("3" * "2") = 6 ("3" % "2") = 1 ("3" + null) = 3null
将值转换为字符串:
可以在JavaScript中使用String()或toString()函数将值转换为字符串。
String语法
String(value)
例:
Input: var v = 1555; var s = String(v); Output: now s contains "1555".
toString语法
variableName.toString(base)
例:
Input: var v = 1555; var s = v.toString(); Output: now s contains "1555".
下面的代码将数字转换为字符串,布尔值转换为字符串,日期转换为字符串。
<script> // Number and date has been assigned // to variable v and d respectively var v = 123; var d = new Date('1995-12-17T03:24:00'); // Conversion of number to string document.write(" String(v) = " + String(v) + "<br>"); // Conversion of number to string document.write(" String(v + 11) = " + String(v + 11) + "<br>"); document.write(" String( 10 + 10) = " + String(10 + 10) + "<br>"); // Conversion of boolean value to string document.write(" String(false) = " + String(false) + "<br>"); // Conversion of Date to string document.write(" String(d) = " + String(d) + "<br>"); </script>
输出:
String(v) = 123 String(v + 11) = 134 String( 10 + 10) = 20 String(false) = false String(d) = Sun Dec 17 1995 03:24:00 GMT+0530 (India Standard Time)
将值转换为数字
我们可以在JavaScript中使用Number()函数将值转换为Number。 它可以将任何数字文本和布尔值转换为数字。 如果是非数字字符串,它会将其转换为NaN(非数字)。
句法:
语法
Number(valueToConvert)
例:
Input: var s = "144"; var n = Number(s); Output: now n contain 144(Number).
下面的代码将数字文本,日期和布尔值转换为数字。
<script> // Number and date has been assigned // to variable v and d respectively var v = "144"; var d = new Date('1995-12-17T03:24:00'); // Conversion of string to number document.write(" Number(v) = " + Number(v) + "<br>"); //Conversion of boolean value to number document.write(" Number(false) = " + Number(false) + "<br>"); document.write(" Number(true) = " + Number(true) + "<br>"); // Conversion of date to number document.write(" Number(d) = " + Number(d) + "<br>"); </script>
输出以下结果:
Number(v) = 144 Number(false) = 0 Number(true) = 1 Number(d) = 819150840000
如果字符串是非数字,则将其转换为NaN,白色空格或空字符串将转换为0。
// Empty string assigned var v = ""; // White space assigned var d = " "; // Non-number string assigned var s = "GeeksforGeeks"; // Printing converted values of number document.write(" Number(v) = " + Number(v) + "<br>"); document.write(" Number(d) = " + Number(d) + "<br>"); document.write(" Number(s) = " + Number(s) + "<br>");
输出以下结果:
Number(v) = 0 Number(d) = 0 Number(s) = NaN