为什么可以't我访问一个带单点的整数的性质
Why can't I access a property of an integer with a single dot?
如果我尝试写入
3.toFixed(5)
存在语法错误。使用双点、放入空格、将三个放在括号中或使用括号符号可以使其正常工作。
3..toFixed(5)
3 .toFixed(5)
(3).toFixed(5)
3["toFixed"](5)
为什么单点表示法不起作用?我应该使用这些替代方案中的哪一个?
句点是数字的一部分,因此代码将被解释为:
(3.)toFixed(5)
这自然会产生语法错误,因为您不能立即在数字后面加上标识符。
任何防止句点被解释为数字的一部分的方法都是有效的。我认为最清楚的方法是在数字周围加括号:
(3).toFixed(5)
您无法访问它,因为JavaScript的标记化器存在缺陷。Javascript试图将数字上的点表示法解析为浮点文字,因此不能使用属性或方法:
2.toString(); // raises SyntaxError
正如您所提到的,有几个变通方法可以用来使数字文字也充当对象。其中任何一项都同样有效。
2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first
要了解更多对象用法和属性,请查看Javascript Garden。
它不起作用,因为JavaScript将3.
解释为浮点常量(如3.5
)的开头,或者是整个浮点常量(与3. == 3.0
一起),所以不能在它后面加标识符(在您的情况下,是属性名)。它没有意识到您打算将3
和.
作为两个独立的令牌。
你的任何解决方案对我来说都很好。
这是Javascript语法中的一个歧义。当解析器得到一些数字,然后遇到一个点时,它可以在"NumberLiteral"(如3.5)或"MemberExpression"(如3.foo)之间做出选择。我想这种模糊性不能通过前瞻性来解决,因为科学的表示法-3.e2
应该解释为300
还是a property e2 of 3
?因此,他们自愿决定在这里更喜欢NumberLiteral
,因为实际上对3.foo
这样的东西没有太多需求。
正如其他人所提到的,Javascript解析器将Integer文本后面的点解释为小数点,因此它不会调用Number对象的方法或属性。
要显式通知JS解析器调用Integer文本上的属性或方法,可以使用以下任何选项:
双点符号
3..toFixed()
用空格分隔
3 .toFixed()
将整数写成十进制
3.0.toFixed()
用括号括起来
(3).toFixed()
分配给常量或变量
const nbr = 3;
nbr.toFixed()
- 有没有添加一个ng点击到md背景
- 如何在谷歌地图中突出显示一个州点击一个国家的任何区域
- 传递来自<输入类型=“;文件“;id=“;文件“/>尽管还有一个按钮点击
- 将一个对象转换为一个单键对象数组(带下划线?)
- 一个按钮中的两个onClick功能,并希望一个接一个地发生一个单击功能
- 单击单选按钮禁用另一个单选按钮
- 单点高库存滚动条问题
- 为什么在模糊事件处理程序中添加setTimeout会修复“;掩蔽”;另一个单击处理程序的
- 选择其中一个单选按钮,然后单击“提交”,重定向其他页面
- 我有两个复选框,只有一个可以点击
- 我让一个图像看起来像一个可点击的按钮,但现在当我点击它时,它不会起到超链接的作用
- jQuery复选框和span共享一个单击事件
- 单击另一个锚点标记时,从锚点标记获取字符串值
- 通过它查询谷歌地图上已经存在的标记's的lat和long,并以编程方式在其上触发一个单击事件
- 尝试使用PHP / Javascript构建一个可点击的索引,该索引显示单击的每个项目的数据
- jquerymobile动态创建一个单选按钮并监听点击事件
- 为什么可以't我访问一个带单点的整数的性质
- PHP表单-提交表单上点击一个单选按钮
- 填写一个表单-点击Angular js问题
- 当我尝试点击一个单选按钮时,它会选择另一个