请教什么情况下调用函数会改变实参的值?

winzond 2018-02-05 03:55:29

$(function () {
$.getJSON({
type: "get",
url: "dist/json/nav.json",
success: function (data) {
var showList = $("<ul class='" + data.ulClass + "'><li class='header'>主导航</li></ul>");
showAll(data, showList);
$(".sidebar").append(showList);
}
});
//data为json数据
//parent为要组合成html的容器
function showAll(data, parent) {
$.each(data.children, function (index, fatherLi) {//遍历数据集
var li1 = $("<li class='" + fatherLi.liClass + "'><a href='" + fatherLi.link + "'><i class=" + fatherLi.iClass + "></i>" + fatherLi.label + "</a></li>");//没有children的初始li结构
var li2 = $("<li class='" + fatherLi.liClass + "'><a href='" + fatherLi.link + "'><i class=" + fatherLi.iClass + "></i>" + fatherLi.label + "<span class='" + fatherLi.spanClass + "'><i class='" + fatherLi.spanChildIClass + "'></i></span>" + "</a></li>");//有children的初始li结构
//console.log($(li1).html());
//console.log($(li2).html());
if (fatherLi.children.length > 0) { //如果有子节点,则遍历该子节点
var ul = $("<ul class='" + fatherLi.children[0].ulClass + "'></ul>");
$(li2).append(ul).appendTo(parent);//将li的初始化选择好,并马上添加带类名的ul子节点,并且将这个li添加到父亲节点中
showAll(fatherLi.children[0], $(li2).children().eq(1));//将空白的ul作为下一个递归遍历的父亲节点传入,递归调用showAll函数
} else {
$(li1).appendTo(parent);//如果该节点没有子节点,则直接将该节点li以及文本创建好直接添加到父亲节点中
}
});
}
});

js代码

如上代码showlist的值发生了变化

var a=10;
functionName(a);
alert(a);
function functionName(b){
b=20;
}
如上代码,弹出的是10,不是20。
请教,什么情况下会改变实参的值?什么情况下不会?
...全文
1049 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊的上午 2018-02-06
  • 打赏
  • 举报
回复
在函数里面返回下你改变后的值,这个可以去看下引用传递和值传递,js和java这点上比较相似
似梦飞花 2018-02-05
  • 打赏
  • 举报
回复
基本类型不会 引用类型修改属性会变 修改引用不影响外边
天际的海浪 2018-02-05
  • 打赏
  • 举报
回复
认真的说,js中任何情况下都不能在函数内通过形参改变实参变量本身的值。(因为js中没有指针,只有引用) 不过,虽然不能改变实参变量本身的值,但是如果实参的值是数组或对象,是可以通过形参间接的修改实参变量数组或对象中的属性。 注意,“改变实参变量本身的值”和“修改实参变量数组或对象中的属性”是两个不同的操作。 var a={key:10}; functionName(a); alert(a.key); function functionName(b){ b.key=20;//修改对象中的key属性。但a或b参数中存放的对象引用地址没有改变 //如果是 b={key:20};这是改变形参b中存放的对象引用地址,实参a中存放的对象引用地址没有改变,还是{key:10} }

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧