如果我有一个来自php echo
...
var names_each = <?php echo $ind_name_each; ?>;
... $ind_name_each
派生自decimal(5,2)
类型的mysql列,
它是javascript中的数字还是字符串?
如果all_total = 6.00 和names_each = 5.00 我这样做:
all_total = parseInt(names_each) + all_total;
我得到56.00
all_total = names_each + all_total;
我得到5.006.00
all_total = parseFloat(names_each) + all_total;
我得到56.00
我需要一些理解。
答案 0 :(得分:5)
将all_total
从字符串转换为int / float ...
因为现在,所有3个示例中的+
都是字符串连接
答案 1 :(得分:4)
两个变量都是字符串:
var names_each = '5.0', all_total = '6.0';
所以+操作连接这些字符串:
console.log(names_each + all_total); // '5.0' + '6.0' => '5.06.0'
console.log(parseInt(names_each) + all_total); // 5 + '6.0' => '5' + '6.0' => '56.0'
但如果您先将它们解析为数字,那么您可以使用+来添加它们:
all_total = parseInt(names_each) + parseInt(all_total);
console.log(all_total); // 5 + 6 => 11
答案 2 :(得分:4)
在JavaScript中,如果{{1>}运算符的 侧是字符串值,那么两个侧将转换为字符串,运算符的结果为这些值的字符串连接。以下是一些例子:
+
请注意,最后3个案例的相同结果。
快乐的编码。
答案 3 :(得分:2)
在你的例子中,不清楚all_total
首先出现在哪里,但它必须是一个字符串,因为你得到字符串连接而不是添加。
要回答您的第一个问题, names_each
不是字符串,而是数字。
此PHP文件的输出
var names_each = <?php echo $ind_name_each; ?>;
应该是这样的:
var names_each = 5;
或
var names_each = 5.1;
所以,它不是字符串,而是js中的实际数字。如果您尝试添加的另一侧是字符串,则会得到字符串连接。
答案 4 :(得分:1)
你的变量是字符串,而不是数字 因此,除非您明确地将它们转换为数字,否则会得到字符串连接。
答案 5 :(得分:1)
以下内容将告诉您它们是什么:
console.log(typeof names_each);
console.log(typeof all_total);
以下是一些例子:
typeof "6.00" //result is "string"
typeof 6.00 //result is "number"
如果您向应用添加一些日志记录,您应该能够看到它变成字符串的位置。
此外,您应该知道发生以下情况:
5.00 == "5.00" //result is "true"
5.00 === "5.00" //result is "false"
使用三等于防止JS引擎隐式转换var的类型。因此,使用===,您将得到严格的比较,没有自动类型转换。
我希望这会有所帮助。