0

我有一个作为服务的 cfc。它只有功能。到现在为止还没有任何成员变量。

登录.cfc

function post(required string email, required string password) { 

  ...

  variables.password = arguments.password; // wish I didn't have to do this
  var User = entityLoad("Users", {email : arguments.email}).filter(
      function(item){
        return item.validatePassword(variables.password);
      });
  variables.password = "";
  ...

我不喜欢我必须设置arguments.passwordvariables.password只是让里面的函数.filter可以看到它。没有更清洁的方法来做到这一点吗?

4

1 回答 1

2

在 CF11 和更新版本中,包括 Lucee 4/5,CFML 闭包可以访问父作用域中的变量(以及堆栈上层)。CF10 似乎有这方面的问题......但这是您可以在https://trycf.com中运行的代码,以查看它在每个版本的 ColdFusion 上的工作方式:

<cfscript>
function doFilter(term) {
    var superheroes=[
           {"name":"Iron Man","member":"Avengers"},
           {"name":"Wonder Woman","member":"Justice League"},
           {"name":"Hulk","member":"Avengers"},
           {"name":"Thor","member":"Avengers"},
           {"name":"Aquaman","member":"Justice League"}
     ];

    var filtered=superheroes.filter(function(item){
       return item.member==term;
    });
    writeDump(filtered);
}

doFilter("Avengers");
</cfscript>

因此,换句话说,如果您使用的是 CF11 或更新版本,或者 Lucee,您应该可以访问 post() 方法中的参数。

于 2018-11-21T05:01:56.867 回答