码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-02-25 14:56:29      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:init   ati   val   been   使用   signed   zed   parameter   cal   

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中的搜寻参数机制区别

标签:init   ati   val   been   使用   signed   zed   parameter   cal   

原文地址:https://www.cnblogs.com/ttty/p/10430807.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!