关于引用
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script type="text/JavaScript">
var a = 0;
var b = 0;
function show() {
b = 1;
}
alert(b);
show(0);
alert(b);
</script>
</head>
<body></body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script type="text/JavaScript">
var a = 0;
var b = 0;
function show(b) {
b = 1;
}
alert(b);
show(0);
alert(b);
</script>
</head>
<body></body>
</html>
代码如上
第一个的alert是 0 /1
第二个的alert是 0 /0
第二个可否理解成为 function里的b全部代换成了0
即 function show(0) {
0 = 1;
}
所以对第二个的第二个alert 无影响
第二个里面function里有b了(就是你传进来的参数) 就不往花括号外层去找了
而第一个 function里面要对b赋值的时候发现没b 就去外面找b了 本帖最后由 kogawananari 于 2020-9-11 22:53 编辑
但是你现在b是值类型 b是引用类型的时候就会又不一样
<script>
function show(b) {
b = 1;
}
let a =
alert(a)//
show(a)
alert(a)//
</script>
形参相当于在函数内直接赋值的变量,不会影响原实参
当参数是复杂对象的时候,赋值相当于别名。此时函数会影响原实参 kogawananari 发表于 2020-9-11 22:50
但是你现在b是值类型 b是引用类型的时候就会又不一样
形参相当于在函数内直接赋值的变量,不会影响原实 ...
这个也能想成是
function show(b) {
b = 1;
}中的b 全部替换为a
function show(a) {
a = 1;
}
然后改变a数组啊
页:
[1]