我想重新分配通过多个函数传递的变量
public name: string;
public secondName: string;
public thirdName: string;
functionA(name: string) {
this.functionB(name);
}
functionB(name: string) {
name = "Hello World";
}
当我像这样在functionA()中调用变量时,我希望将变量重新分配给“ Hello World”
functionA(this.name);
console.log(this.name);
这是怎么了? Console.log输出未定义。我知道functionB()中的“名称”不直接引用this.name,这就是要点,我想找到一种“名称”引用this.name的方法。
答案 0 :(得分:3)
字符串是通过值而不是通过引用传递的。当您将this.name
传递给functionB且functionB对其进行更改时,functionB仅更改参数的值。
要确保其更改this.name
,您可以执行以下操作:
public name: string;
functionA() {
this.functionB("hello world");
}
functionB(nameToSet: string) {
this.name = nameToSet;
console.log(nameToSet, this.name);
}
答案 1 :(得分:1)
您应该使用this.name
而不是name
。
您的代码将如下所示:
public name: string;
functionA() {
this.functionB(this.name);
}
functionB(name: string) {
this.name = "Hello World";
console.log('name', this.name);
}
查看there进行实时演示
答案 2 :(得分:1)
您正在尝试获取this.name
的值。在类或组件中,您刚刚声明了属性“ public name:string;”。但没有设置。因此该属性似乎是“未定义的” =>,在您的示例中是正确的。
本地函数变量 name
当然设置为字符串“ Hello World”,可以使用。
如果要设置this.name
,则需要在functionB
中进行设置,例如:
functionB(name: string) {
this.name = name;
console.log(name, this.name);
}