关于javascript:方法中的默认变量?

Default vars in a method?

本问题已经有最佳答案,请猛点这里访问。

我的方法是:

1
2
3
4
p.show = function(message, status, timer){

    //do stuff
};

有没有一种方法,如果不传入诸如timer之类的var,那么为它们设置一个默认值,例如true。

在PHP中,我可以这样做:

1
2
private function show(message, status, timer = true){
}


是的,相当于一个额外的逻辑是测试的长度的arguments阵列式的面向: </P >

1
2
3
4
5
p.show = function(message, status, timer){
    if (arguments.length < 3 )
        timer = 1000; // default value
    //do stuff
};

如果你想设置它的默认值,如果她是通过在人力,但undefined是通过在设计值,你也可以使用: </P >

1
2
3
4
5
p.show = function(message, status, timer){
    if (timer === undefined)
        timer = 1000;
    //do stuff
};

一个更普通的方式是使用这将是timer = timer || 1000;集TIMER到1000如果它有一个falsy to begin与价值,所以,如果有人在passes好三argument,或如果他们通在0,它将仍然是集的1000,但是如果他们在一个通truthy值50状或安的面向,它这将保持价值。 </P >

在未来的版本中的JavaScript(es6),你将能使用默认的arguments路你是用来从PHP: </P >

1
2
3
p.show = function(message, status, timer = 1000){
    //do stuff
};


好的。我必须做人力: </P >

1
2
3
p.show = function(message, status, timer) {
    if( timer === undefined) timer = true;
}

如果你并不希望falsy函数值,你也可以做这个: </P >

1
2
timer = timer || true;
// this is commonly seen in event handlers as e = e || window.event;


1
2
3
p.show = function(message, status, timer){
    timer = (timer !== undefined && timer !== null) ? timer : 60;
};