JAVA:
public class Hello { public static void changeInt(String str){ if (str == "blue") { str = "red"; } else{ str = "green"; } System.out.println(str); } public static void main(String[] args) { String str = "blue"; changeInt(str);//red } }
可以看出str值为red,已经被修改。
JS:
1:
var color="blue"; function changecolor(color){ if(color=="blue"){ color="red"; } else{color="green";} console.log(color);//red } changecolor(color); console.log(color);//blue
2:
var color = ‘blue‘; function changecolor () { if (color === ‘blue‘) { color = ‘red‘; } else{ color = ‘green‘; } } changecolor(); console.log(color);//red
完全不同的执行结果 这是因为 参数的传递是值的传递
搜寻参数的机制是first local then global, 如果local没找到则到global中找。
- 如果函数parameter中没有定义color,函数中使用的color的值就是从global获取的“blue”;
- 如果函数parameter中定义了color,这就相当于新建了一个local变量,在图二例子中,该parameter is initialized, but hasn‘t been assigned a value, 此时color的值是undefined。
原文地址:https://www.cnblogs.com/ttty/p/10430807.html
时间: 2024-11-06 07:42:12