算术运算符在Javascript中作为函数名签名

时间:2015-05-13 01:59:06

标签: javascript

我正在寻找一种方法来将算术运算符符号作为函数名称然后调用它。 我想做这样的事情:

+(4,5) // Answer : 9
/(9,3) //Answer : 3

我已经看过这样的代码示例,但我无法记住它是如何分配名称的,如#34; +"到JavaScript中的函数,然后调用它。

有人能告诉我一些棘手的JavaScript方法吗?

4 个答案:

答案 0 :(得分:2)

那是不可能的

  

函数名称可以包含字母,数字,下划线和美元   标志(与变量相同的规则)。

答案 1 :(得分:2)

你不能

  

变量/函数名称只能包含字母,下划线,$,数字(如果它们不是第一个字符)以及其他一些ACII和unicode字符

检查herehere以获取更多信息

<小时/>

解决方法 ISH

如果您决定使用+作为您的函数名称,则可以使用:

window['+'] = function (a,b) {
    return a+b;
};

这是不好的做法,仍然只创建一个名为+的变量“理论上”,并且只能使用以下方法调用:

window['+'](9, 10);

返回19

你在想什么

您建议的语法似乎是Object.defineProperty语法:

Object.defineProperty(this, '+', {value:function () {
    alert('foo');
}});

尝试

你可以创建类似的东西:

window.special = function(a, args) {
    var o = {
        '+': function (b,c) {
            return b+c;
        }
    };
    return o[a].apply(this, args);
};

然后:

special('+', [1, 2]);

答案 2 :(得分:2)

  

我知道用JS编写了10年之后。但有一个棘手的方法!正如我在代码示例中记得的那样,我看到它写的类似于("+", function(){})。我只记得这部分代码!

     

@保罗。是。但是怎么样?我不记得这部分了!

定义另一个函数,该函数接受一个参数,告诉它应用哪个方法,例如

var op = (function () {
    var fns = Object.create(null),
        slice = Array.prototype.slice;
    fns['+'] = function () { // example adder
        var i, j = 0;
        for (i = 0; i < arguments.length; ++i)
            j += arguments[i];
        return j;
    };
    // add other methods here
    return function op(operator) {
        if (operator in fns)
            return fns[operator].apply(this, slice.call(arguments, 1));
        throw new SyntaxError('Not a valid operator: ' + operator);
    };
}());

op('+', 1, 2, 3, 4); // 10

答案 3 :(得分:0)

如果你真的想要覆盖'+'的功能,你可以添加它,你可以实际写

window['+'] = function(a, b) { return a + b; };

但是它做了什么......这将向窗口命名空间添加一个函数。但是,您仍然无法使用+(a,b)调用它,您必须使用窗口命名空间。如。。

window['+'](4,5);

结果:9

调用窗口空间确实很痛苦。您不限于可以使用任何对象的window空间。