我有一次发现,在将属性作为参数传递给其他函数之前,将属性分配给函数很有用。
看起来像这样(对于匿名函数和变量分配函数对象之间的任何混淆,我感到抱歉,我认为它们不是同一件事):
"(could strict mode have something to do with this?)"
var funcOne = function(arg1, arg2) { return arg1 + arg2; };
funcOne.process = true;
var funcTwo = function(arg1, arg2) { return arg1 + arg2; };
funcTwo.process = false;
var procFunc = function(argFunc) {
if (argFunc.process) {
return argFunc(1,2);
}
return "not processed"
}
procFunc(funcOne); // 3
procFunc(funcTwo); // "not processed"
我想声明一个匿名函数并同时为其分配属性,以便稍后将其作为函数数组堆栈的一部分调用时,条件代码可以依赖于该属性。
就像是:
"(could strict mode have something to do with this?)"
var funcOne = function(arg1, arg2) { return arg1 + arg2; }.process = true;
var funcTwo = function(arg1, arg2) { return arg1 + arg2; }.process = false;
var procFunc = function(argFunc) {
if (argFunc.process) {
return argFunc(1,2);
}
return "not processed"
}
procFunc(funcOne); // "not processed"
procFunc(funcTwo); // "not processed"
意外的“未处理”是因为令人困惑的是,JavaScript 实际上将值“true”和“false”分配给 funcOne 和 Two 变量,并且当条件满足时它不会抛出错误if (argFunc.process)
被评估(不管,正如我想的那样,“严格模式”)。
我已经使用 IIFE 实现了匿名功能,该 IIFE 将“匿名”函数分配给变量,然后分配该变量的属性并从 IIFE 返回该变量,但我希望有一个 JavaScript 语法可以实现这一点,或者只是也许是更好的方法。
就我的感觉而言,我尝试的点属性分配没有意义。如果程序员想要为匿名函数分配多个属性怎么办?
我有一个短暂的希望var funcOne = function (arg1, arg2) { return arg1 + arg2; } = { process: true };
但这会引发SyntaxError: Invalid left-hand side in assignment
.