ES6函数默认参数

ES5设置默认参数

function makeDefault (name, age) {
    name = name || "default name";
    age = age || 18;    
}

当参数为0''nullfalse等时,即使这个值合法,也会被视为一个假值,从而取默认值。这种情况下,使用typeof检查参数类型。

function makeDefault (name, age) {
    name = (typeof name !== "undefined") ? name : "default name";
    age = (typeof age !== "undefined") ? age : 18;    
}

ES6设置默认参数

如果没有参数传入,则提供一个初始值

function makeDefault (name, age = 18) {
        
}

当第二个值不传,或者传入undefined时,age则使用默认值

makeDefault ('lee')
makeDefault ('lee', undefined)

因此,可以为任意参数指定默认值,且已指定默认值的参数后,可以继续声明无默认值参数

function makeDefault (name, age = 18, gerder) {
        
}
makeDefault ('lee', undefined, 'male')

默认参数对arguments对象的影响

ES5非严格模式

命名参数的变化会同步更新到arguments对象

function es5 (name) {
    console.log(name === arguments[0]); // true
    name = "lee";
    console.log(name === arguments[0]); // true
}
es5("xiaoming");

ES5严格模式和ES6使用默认值时

命名参数与arguments对象分离

function es6 (name) {
    console.log(name === arguments[0]); // true
    name = "lee";
    console.log(name === arguments[0]); // false
}
es6("xiaoming");

网站导航

网站导航

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 使用默认参数时,参数会形成一个独立的作用域,此作用域与函数体中的作用域是平行关系 经过测试发现,此段代码如果使用b...
    liujunyan阅读 4,477评论 3 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,713评论 0 13
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,180评论 0 5
  • 文/月中山 上一章 / 简介+目录 / 下一章 时间飞速奔跑在小考之前,孟杰终于答应在六月二十三号考试完与笔...
    月中山阅读 1,756评论 0 2
  • 大家好!我是322号星宝宝营养美容师祁爽,正在参加日记星球第十七期蜕变之旅,这是我的第106篇原创日记,我已感觉到...
    营养美容培训师祁爽阅读 2,515评论 0 0

友情链接更多精彩内容