bil*_*oah 3 javascript increment type-conversion unary-operator
通常当我使用jQuery获取表单输入的值时,我不得不在执行任何数学运算之前将其转换为数字.例如,使用一元加运算符进行转换,然后递增:
var x = +$(this).val();
x += 1;
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,++使用字符串并自动进行转换:
var x = $(this).val();
x++;
Run Code Online (Sandbox Code Playgroud)
为什么?这总是安全吗?
它的工作方式是这样的,因为增量运算符的第一件事就是将其操作数强制转换为数字,这在规范的§11.3.1中.在规范中,是的,这是你可以依赖的东西.
跳过一些spectalk,算法是:
oldValue是ToNumber(GetValue(lhs)).newValue可以添加值的结果1来oldValue,使用同样的规则作为+运算符(见11.6.3).PutValue(lhs, newValue).oldValue.然而,+=定义完全不同,不是作为早期步骤强制数字,因此最终应用字符串连接而不是添加.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |