问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在ES5与ES6环境下处理函数默认参数

发布网友 发布时间:2022-04-23 19:19

我来回答

2个回答

懂视网 时间:2022-05-14 18:21

本篇文章给大家带来的内容是关于ES6中默认参数的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

语法

function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { 
 statements 
}

使用

function sum(a=0, b=0){
 return a+b
}
sum() // 0
sum(1) // 1
sum(1, 2) // 3

使用babel翻译一下

function sum() {
 var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
 var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
 return a + b;
}

传值检测

从babel翻译的结果可以看出,默认参数只检查两种情况

  • 不传参数

  • 传入undefined

  • function sum(a=0){
     return typeof a
    }
    sum() // 'number'
    sum(undefined)// 'number'
    sum(1) // 'number'
    sum('1') // 'string'
    sum(null) // 'object'
    sum(false)// 'boolean'

    前参后用

    前面的参数可以作为后面参数的默认值,甚至可以对前面的参数做一些特别的操作,比如简单的加减乘除

    function sum(a=1, b=a, c=a+b){
     return [a, b, c]
    }
    sum() // [1, 2, 3]
    sum(2) // [2, 2, 4]
    sum(2,2) // [2, 2, 4]
    sum(2,2,2) // [2, 2, 2]

    默认参数调用函数

    赋值默认参数甚至可以调用函数,可以调用函数,就已经说明无所不能了~

    function sum(a=1, b=(()=>4)()){
     return [a, b]
    }
    sum() // [1, 4]
    sum(2) // [2, 4]
    sum(2,2) // [2, 2]

    注意: 无法调用函数内部声明的函数作为默认值

    function sum(a=1, b=num2()){
     function num2(){
     return 4
     }
     return [a, b]
    }
    sum() // Uncaught ReferenceError: num2 is not defined

    按序覆盖

    参数还是按调用的时候传输的顺序一一覆盖的,不会因为它有默认值就跳过该形参的赋值

    function sum(a=1, b ){
     return [a, b] 
    }
    sum() // [1, undefined]
    sum(2)// [2, undefined]
    sum(1,2) //[1, 2]

    解构赋值默认参数

    结构中也可以使用默认参数,虽然结构还没在这系列出现过

    function sum([x, y] = [1, 2], {z: z} = {z: 3}) { 
     return [x, y, z]; 
    }
    sum() // [1, 2, 3]
    sum([2,4],{z: 6}) // [2, 4, 6]

    热心网友 时间:2022-05-14 15:29

    函数传值调用时,实际参数作为右表达式想形式参数提供初始值。C++的允许指定参数的默认值,凼函数调用中升略默认参数时,默认值自动传递被调用函数
    详解如何配置tsconfig.json

    一般情况下,target的默认值为ES3,如果不配置选项的话,代码中使用的ES6特性,比如箭头函数会被转换成等价的函数表达式。 3、module module选项可以用来设置TypeScript代码所使用的模块系统。 如果target的值设置为ES3、ES5,那么module的默认值则为CommonJS;如果target的值为ES6或者更高,那么module的默认值则为ES6。 另外,...

    es6定义const x=,在es5中该怎么定义

    支持 const,但是 const 没有块级作用域 仅strict mode 支持 const 对于不支持的环境,就直接使用 var。注意一下作用域问题就好。如果想使用 es6 语法,并且可以在 es6 环境中可以正常运行,建议使用 babeljs。

    es5和es6的区别

    1、变量声明:ES5使用var关键字来声明变量,而ES6引入了let和const关键字。let关键字用于声明块级作用域的变量,解决了ES5中变量提升和作用域的问题。const关键字用于声明常量,它代表一个不可改变的值。这样更加清晰地定义和管理变量,提高代码的可读性和可维护性。2、箭头函数:ES6引入了箭头函数(Arrow...

    ES5和ES6中继承的不同之处

    (2)将空对象的proto指向构造函数的prototype (3)运行该构造函数 (4)如果构造函数没有 return 或者 return 一个返回 this 值是基本类型,则返回this;如果 return 一个引用类型,则返回这个引用类型 2、ES6中的constructor()和super()(1)constructor()——构造方法:这是ES6对类(class)的默认...

    es6 中 函数和方法的区别及用法

    1,引入与导出方式不同//ES5varReact=require("react");//ES6importReact,{Component,PropTypes}from'react�0�2�0�2导入:ES5使用require导入,而ES6使用了import//ES5module.exports=Test;�0�2//ES6exportdefaultTest;�0�22,创建组件...

    es6 的 import、export 和 commonjs 的 require、exports模块化分析...

    首先创建项目并安装babel编译环境。在a.js文件中,使用es6语法导出三个变量及一个默认导出,使用babel编译后,可以看到es6的导入导出语句转换成了commonjs的写法。注意,export default被挂载到exports.default变量上,并定义了__esModule属性,表明此文件导出的是es6的模块。require导入 commonjs的导入使用...

    es5和es6的区别

    模块化是ES6的一大进步,通过import和export关键字,代码被划分为独立的模块,方便代码复用和组织,避免了ES5中自定义加载器或依赖第三方库的复杂性。在ES6中,块级作用域(let和const)让变量和函数的作用域更加明确,箭头函数简化了函数声明,而解构赋值则简化了处理数组和对象的操作。此外,类的引入和...

    es6定义const x=,在es5中该怎么定义

    es6定义const x=,在es5中该怎么定义 现在比较流行的解决这个问题的方法是使用 Promise,可以将嵌套的回调函数展平。但是写代码和阅读依然有额外的负担。另外一个方案是使用 ES6 中新增的 generator,因为 generator 的本质是可以将一个函数执行暂停,并保存上下文,再次调用时恢复当时的状态。co 模块是个...

    es5和es6的区别

    二、详细解释 语法差异:ES6在语法上增加了许多新特性,如引入了let和const关键字用于声明变量,这些关键字解决了ES5中var声明的一些不足。此外,ES6还引入了模块化的概念,允许开发者将代码拆分成独立的模块,提高了代码的可维护性和复用性。功能增强:ES6在功能上有很多增强,最显著的是引入了箭头函数、...

    [万字总结]夯实你的TypeScript基础!(一)

    二.可选参数npxtsc--init0 三.默认参数npxtsc--init1 四.剩余参数npxtsc--init2 五.函数的重载npxtsc--init3 5.类一.TS中定义类npxtsc--init4 实例上的属性需要先声明在使用,构造函数中的参数可以使用可选参数和剩余参数二.类中的修饰符 public修饰符(谁都可以访问到)npxtsc--init5 npxtsc--init6 我...

    函数默认参数 在window默认环境中 默认函数 函数默认类型 函数默认值 函数默认返回值类型 vs默认环境选哪个 vs默认环境设置 vs2010选择默认环境设置
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    兰州加沙肉的做法 酸辣加沙怎么做 ...&Vidda电视机推荐!含55/65/75/85/100寸数据对比! ...海信电视推荐 Vidda电视机推荐!含55/65/75/85/100寸数据对比! 微积分,这是这道题的解题步骤,请老师看一下为什么要这样做,为什么会引 ... 微积分中的主部是什么意思 沃柑刚打了除草剂可以修剪吗? 如何选择合适的MySQL版本进行下载mysql下载那个版本 迷室往逝第四章怎么过_第四章图文视频通关攻略 《迷室往逝》第六章花园图文通关攻略介绍_《迷室往逝》第六章花园图文... es6的babel转换器需要依赖什么环境吗 如何在es6语法所写的文件中把bootstrap.js的功能引入进来 es6定义const x=,在es5中该怎么定义 webpack babel 怎么将Object.assign() 转成es5语法 长虹语音遥控器怎么配对? QQ群隐藏了,要怎么才能现出来?? 长虹语音遥控器怎么配对 es6和es5的区别 合并打包 长虹遥控器902vc怎么和电视配对? 长虹RL67CT电视遥控器怎么对码 为什么我使用gulp-babel不能将es6编译成es5 长虹电视的遥控板怎么和机顶盒遥控对接? 如何将es5的代码转换为es6 有哪些ES6兼容ES5的工具 长虹电视用万能遥控器怎么配对,还有配对好为啥上下左右健不能使用 隐藏的qq群怎么找出来 长虹50Q3t只能配对一个遥控器吗 node服务端发布生产环境时,有必要先把es6转换成es5文件吗 长虹智能遥控器怎么连接电视机 gulp babel安装成功了为什么不能将es6编译成es5 CAD怎样使用半径方式画圆弧 cad知道圆心,半径,弧长怎么画圆弧 CAD中已知半径,怎么画指定弧长的 CAD中,知道一个圆弧的弧长和半径,如何把这个圆弧画出来,请指教,谢谢 cad 已知弧长和半径,怎么画弧 CAD画个圆弧已知弧长跟圆半径和起点与水平线的角度怎么画出这个圆弧? 如何用CAD画弧长为1米,半径为1米的精度圆弧? cad中只给弧长和半径,怎样准确画出弧长 在CAD里面已知圆的半径和一个弧长的长度要怎么去画圆弧啊麻烦告诉我 cad这个弧长怎么画 SNKRS送过来的鞋坏了怎么办 snkrs上面买的鞋尺码不合适可以退换吗? snkrs无法连接服务器解决方法有哪些? 登录snkrs总是出错了 求大神告知在snkrs买的,已发货了,要怎么退款 snkrs上中签后超时取消了,应该怎么办? 如何删除安卓手机中删除软件的文件夹? 安卓手机怎么删除系统自带的软件啊 全面解答:安卓手机怎样才能删除官方自带的软件 耐克snkrs 晚上半夜买鞋,会不会对鞋有有什么影响,会不会买到假的,白天买是真的,晚上买是假的