-
简单数据类型
<script>
var num=1;
function fn1(ele) {
return ele=ele*10;
}
fn1(num)//代码写好就要运行一下,运行一遍fn1的函数代码块,结果为:num=num*10
// 来解析一下
// 开始时 num=1
// 后 来 执行了函数 num=num*10
// 猜一猜,num现在是等于1 还是等于 10
console.log(num)
//答案是1 ,为什么已经执行了一遍 num=num*10 啦,num却没有变呢。
//我们看,num的数据是Number类型的。属于简单数据类型,有的叫原始数据类型,还有的叫基础数据类型,其实我们都一样。
// 你用函数参数传递,js会开辟一个新内存空间,并没有动老num的。所以num还等于1。所以想改变简单类型的数据不能通过函数参数传递。可以直接在函数代码块里改。
// 例如:
var newNum=1;
function fn2(ele) {
newNum=newNum*10;//直接在代码块里改,不通过参数传递再改。
}
fn2(newNum)//要先执行一下,否则JS不会解析函数内部的代码。
console.log(newNum)
</script>
-
复杂数据类型
<script>
var obj={name:"王银辉"}//看看复杂数据类型用参数传递会怎么样。
function fn1(ele) {
ele.name="王大雷"//复杂数据类型可以做为参数传递,因为只要是复杂数据类型,JS不会开辟新空间,还在老地址操作,所以你再打印。也已经是改过的啦。
}
fn1(obj);
console.log(obj)
</script>
简单数据类型传值
复杂数据类型传址