可以在javascript中进行编码,如下所示:
<input type="text" value="1" maxlength="1">
答案 0 :(得分:4)
变量只能包含一个值。该值可以是一个函数。
一个对象可以有一个toString()
方法,可以被黑客攻击以接近你想要做的事情。
function myFactory(value) {
function myFunction(add) {
return myFactory(value + add);
}
myFunction.toString = function() {
return value;
};
return myFunction;
}
var bar = myFactory(2);
console.log(bar + 2);
console.log(bar(2));
console.log(bar(2)(2));
&#13;
这当然是可怕的。
答案 1 :(得分:2)
通过返回一个函数,可以在Javascript中完成。 默认情况下,变量可以是值(文字或函数结果)或函数声明。
function add(number) {
return function(number2) {
return number + number2;
}
}
console.log(add(5)(6));
&#13;
有一些方法可以实现您所描述的bar + 2
,但这是非常规的,在我看来,您不应该在Javascript中使用它们。
答案 2 :(得分:0)
我从Quetin的答案中获得了灵感,并找到了valueOf属性
var foo = function(n) {
var fn = function(x) {
return foo(n + x);
};
fn.valueOf = function() {
return n;
};
return fn;
}
var bar = foo(2);
console.log(bar + 2 === 4, bar);
console.log(bar(2) === 4, bar(2));
console.log(bar(2)(2) === 6, bar(2)(2));
&#13;
我承认日志结果确实很奇怪,但它按预期工作。