为什么我可以将一个字符串和一个数字相乘或相减
Why can I multiple and subtract a string and a number
为什么在JavaScript中我可以用数字字符串执行乘法和减法等操作?带数字的"10"?
JavaScript做类型推断吗?
考虑下面的例子,为什么在最后两个语句中我得到1010而不是20 ?
var foo = "Hello, world!";
var bar = "10";
var x = foo * 10; // x is now bound to type number
console.log("type of x= " + typeof x + ", value of x= " + x); // this will print number NaN, that makes sense..
var y = bar * 10; // y is now bound to type number
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 100
y = bar - 10; // y is now bound to type number
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 0
y = bar + 10; // y is now bound to type string!!
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 1010
y = eval(bar + 10); // y is now bound to type number!!!!
console.log("type of y= " + typeof y + ", value of y= " + y); // this will print number 1010
日志输出:
type of x= number, value of x= NaN
type of y= number, value of y= 100
type of y= number, value of y= 0
type of y= string, value of y= 1010
type of y= number, value of y= 1010
第二个例子
var y = bar * 10
Javascript假设你想要执行一个数学运算,并将你的原始字符串强制转换成一个数字。
在最后两个示例中,您试图将10(数字)添加到bar中。bar(你的变量)是一个字符串,所以JavaScript尽其所能,假设你想要一个字符串作为结果,并通过连接"10"(作为一个字符串)创建一个字符串,而不是将你的原始字符串强制为一个数字。
类型强制转换的规则很复杂。我帮你找找链接。但是Douglas Crockford的《JavaScript: The Good Parts》是一本很好的书。
编辑试试这个,解释得很好。
http://united-coders.com/matthias-reuter/all-about-types-part-2/相关文章:
- 如何制作一个特殊的自动减法器
- 为具有相同类的多个输入添加、移除和添加一个类
- 如何使用jquery对具有相同类的文本框的值求和并将其放入另一个文本框中
- 仅在具有相同类的一个 li 上预览文本
- 与设计用户相关联的多个模型-根据角色选择填写一个模型
- 替换对象's的属性与另一个的属性相比较
- 获取一个元素相对于Javascript中一个祖先的位置
- 如何将一个变量与其他两个变量 (mysql) 相关联
- 是一个与JavaScript的号码相关联的JSON号码
- 为什么两个数字相减会导致 NAN
- j查询如何为具有相同类名的多个元素激活一个事件
- Javascript-当两个数组中的一个元素相同时,执行某些操作
- 将一个元素与一个唯一的数字相关联
- 对具有相同类的多个元素运行一个jQuery函数
- 添加一个与我的JQuery脚本相对应的onclick按钮
- 获取第n个子项,该子项也与每行中的一个复合选择器相匹配
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 如果与框架相结合,则是一个有用或有害的子模板
- 为什么我可以将一个字符串和一个数字相乘或相减
- 如何将从span到cookie的相减值保存到取消选中复选框