功能之间的简单给出错误?

时间:2016-01-12 17:59:40

标签: javascript

我做了这个非常简单的代码:

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);

我错了什么?

3 个答案:

答案 0 :(得分:6)

JavaScript引擎正在尝试将5.解析为浮点数,并且由于.之后的令牌不是有效数字,因此它失败并出现SyntaxError。

要解决此问题,您可以

  1. 在号码后留一个空格

    console.log(5 .between(1, 10));
    // 1
    
  2. 使用parens明确表示5本身是单个表达式

    console.log((5).between(1, 10));
    // 1
    
  3. 使用像这样的双点

    console.log(5..between(1, 10));
    // 1
    
  4. 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);