ECMAScript 6 语法学习——默认参数

在ECMAScript 5中,并没有提供在函数的参数列表中指定参数默认值的语法。

想要为函数参数指定默认值,可以使用如下方法实现

function makeRedirect(url, timeout) {
    url = url || "/home"
    timeout = timeout || 2000

    // 函数其余部分
}
  • 在这个示例中,url和timeout是可选参数,如果不传入对应的参数值,它们也会被赋予一个默认值。
  • 但是这种方法仍有个缺陷,如果传入的值为0,尽管它是个合法值,也不会被生效

这种情况下,可以使用这种更安全的做法

function makeRedirect(url, timeout) {
    url = (typeof url != "undefined") ? url : "/home"
    timeout = (typeof timeout != "undefined") ? timeout : 2000

    // 函数其余部分
}
  • 尽管这种做法更为安全,但是需要额外写很多复杂的代码逻辑。

在ECMAScript 6中,提供了一种更简单的方式,代码如下

function makeRedirect(url = "/home", timeout = 2000) {
    // 函数其余部分
}

此外,与Java、C++等语言要求的不同,在ECMAScript 6中不要求具有默认值的参数只能在函数参数列表的最右边。

具体代码如下

function makeRedirect(url = "/home", timeout = 2000, callback) {
    // 函数其余部分
}

// 传参形式
// 使用url和timeout的默认值
makeRedirect()

// 使用url和timeout的默认值
makeRedirect(undefined, undefined, function() {})

// 使用timeout的默认值
makeRedirect("/login")

// 使用null指定不使用timeout的默认值
makeRedirect("/login", null, function() {})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。