如何创建一个将传递的参数视为文本的函数?

How can I create a function which treats a passed parameter as a literal?

提问人:TobyRush 提问时间:12/28/2021 更新时间:12/28/2021 访问量:29

问:

我敢肯定,这个问题之前已经有人问过,也回答过,但我似乎找不到合适的术语来找到答案。我需要动态创建一系列函数以供以后使用,这些函数使用创建时参数定义的某些值。例如:

var i = "bar";

var addBar = function(x) {
    // needs to always return x + " " + "bar"
  return x + " " + i;
}

i = "baz";

var addBaz = function(x) {
    // needs to always return x + " " + "baz"
  return x + " " + i;
}

alert(addBar("foo")); // returns "foo baz" because i = "baz"

有没有办法传递给这些函数,以便使用原始值,而不是对变量的引用?谢谢!i

javascript 函数 参数传递 by-value

评论

1赞 kmoser 12/28/2021
我能想到三种解决方案:1.使用两个独立的变量(实际上):并且,比如说,。2)只需将值内联写入,例如 3)使用咖喱constijreturn 'foo ' + i;
0赞 TobyRush 12/28/2021
谢谢!在我的实际情况下,前两个选项是不可能的,但听起来咖喱——如果我理解正确的话——正是我想要的。

答:

3赞 epascarello 12/28/2021 #1

您必须执行一些存储变量的操作。制作一个返回函数的函数是一种方法。

var i = "bar";

var addBar = (function (i) { 
  return function(x) {
    return x + " " + i;
  }
}(i));

i = "baz";

var addBaz = (function (i) { 
  return function(x) {
    return x + " " + i;
  }
}(i));

console.log(addBar("foo")); 
console.log(addBaz("foo")); 

评论

0赞 TobyRush 12/28/2021
谢谢!这算不算“咖喱”?