Java中的变量机制以及JS中的搜寻参数机制区别

Posted 张怼怼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的变量机制以及JS中的搜寻参数机制区别相关的知识,希望对你有一定的参考价值。

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。

以上是关于Java中的变量机制以及JS中的搜寻参数机制区别的主要内容,如果未能解决你的问题,请参考以下文章

阿里P8架构师谈:JVM的内存分配运行原理回收算法机制

java 中反射机制和内省机制的区别是啥?

Python 中的垃圾回收机制

JS垃圾回收机制

JS垃圾收集机制

谈谈垃圾回收机制方式内存管理?