我做了这个非常简单的代码:
public class MyClassViewModel : BaseViewModel
{
public Product pro { get; set; }
public double getFromProduct()
{
return pro.price;
}
}
但在测试时:
Number.prototype.between = function(a,b){
return this >= a && this < b ? 1 : 0;
};
给我这个错误:
5.between(1,10);
我错了什么?
答案 0 :(得分:6)
JavaScript引擎正在尝试将5.
解析为浮点数,并且由于.
之后的令牌不是有效数字,因此它失败并出现SyntaxError。
要解决此问题,您可以
在号码后留一个空格
console.log(5 .between(1, 10));
// 1
使用parens明确表示5
本身是单个表达式
console.log((5).between(1, 10));
// 1
使用像这样的双点
console.log(5..between(1, 10));
// 1
PS:避免修改内置的原型。您始终可以构建实用程序功能。
答案 1 :(得分:4)
制作
Number(5).between(1,10);
原因 - (感谢felix-kling同样的事情)
根据specs,小数点(。)在生产角色中不是可选的,因此它始终被视为数字文字的一部分。基本上,5.toString()类似于&#34; 5&#34; toString():一个文字后跟一个标识符。
这就是为什么5.toString()
会出现以下错误
未捕获的SyntaxError:意外的标记ILLEGAL
刚刚测试(5).between(1,10);
也会做,因为它将是一个表达式,其值为数字类型
for (var key in (5) ){ console.log( key " - " (5)[key] ); }
输出
之间 - 函数(a,b){ 返回此&gt; = a&amp;&amp;这个&lt; b? 1:0; }
答案 2 :(得分:2)
您无法直接调用硬编码的任何函数,请将其放入(5)
:
Number.prototype.between = function(a,b){
return this >= a && this < b ? 1 : 0;
};
(5).between(1,10);