默认值 对象形式
参数变量默认声明的,不能用let const 再次声明
{
function Student(x = "XXX", y = "18", z = "汉族") {
this.x = x;
this.y = y;
this.z = z;
}
const Stu = new Student();
console.log(Stu);
}
//Student { x: 'XXX', y: '18', z: '汉族' }
作用域:
一旦设置了参数默认值,函数进行声明初始化时,参数就会形成一个单独的作用域(context)。等到初始化结束,作用域就会消失,
首先找同一级,同一级没有就向上找
此例子中参数y的默认值等于变量x,调用函数 f 时,形成一个单独的作用域 ,在这个作用域里面默认值标量x 向第一个参数x,而不是全局变量x.
因为没给具体的值所以 y=undefinded
{
let x = 1;
function f(x,y = x) {
console.log(y);
}
f()
//undefinded
}
在下面这个例子里面:变量x本身没有定义,所以指向外层的全局变量x 。函数调用时,函数体内部的局部变量x 影响不到默认值变量x
{
//首先找同一级,同一级没有就向上找
let x = 1;
function f(y = x) {
let x = 2;
console.log((y));
}
f()
//1
}
网友评论