有人可以解释下面的行为,它是关于JS中的临时包装器对象,但是当我尝试在数字文字上使用它们时,它们会失败。我错了或最近改变了,我尝试了V8和Gecko,同样的故事。
'stringWrapper'.charAt(0);
"s"
1.toString();
VM8363:2 Uncaught SyntaxError: Unexpected token ILLEGAL(…)InjectedScript._evaluateOn @ VM8253:875InjectedScript._evaluateAndWrap @ VM8253:808InjectedScript.evaluate @ VM8253:664
typeof 1
"number"
(1+0).toString();
"1"
typeof (1+0)
"number"
答案 0 :(得分:2)
这是JavaScript和其他动态类型语言(如Python)中的一个有趣的“功能”,您可以在其中调用方法或访问整数上的属性。
实际发生的是引擎将1.toString()
视为浮点数,而toString()
部分是第一个小数所在的位置。
解决方案是要对其进行双点,1..toString()
并省略尾随小数或将数字括在括号(1).toString()
中以评估数字,然后在结果上调用toString
。
答案 1 :(得分:0)
更有趣的JavaScript内容:var element = document.getElementById('element);
有效! 1 .toString()
不是。
您可能会在奇怪的JavaScript怪癖中享受Kyle Simpson's video