揭秘字面量周围的括号

4

假设:

Number.prototype.add = methodize(add);

function methodize(func) {//a function that converts a binary function to a method
    return function (x) {        
            //console.log(x);            
            console.log(this);
            return func(x,this);            
        }
}

function add(x, y) {
    return x + y;
}

console.log((3).add(4));

最终行(3).add(4)如果更改为3.add(4)会抛出异常;如果不更改,则返回7。
示例:http://jsfiddle.net/smacky311/m3NwK/2/ 为什么会发生这种情况呢?我读过的一些资料说,JSON周围的括号可以用于将JSON转换为对象字面量。然而,由于初始的{并不适用于这种情况,所以表达式被解释为一个对象字面量。
在什么条件下解释器会确定一个字面量是一个表达式?是否每次添加括号时都会如此?

4
有趣的事实:3..add(4) 是有效的 :-) - gen_Eric
1个回答

6

3. 会被解析为十进制数(如 3.0)。
如果要使用点号(.)访问成员,需要防止它被解析为数字字面量的一部分。

在点号(.)前添加空格或者再加一个点号(.)也可以帮助解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接