ECMAScript6函数默认参数_javascript技巧
语言更新时每一个新增的特性都是从千百万开发者需求里提取过来的,规范采用后能减少程序员的痛苦,带来便捷。
我们经常会这么写
function calc(x, y) { x = x || 0; y = y || 0; // to do with x, y // return x/y }
简单说就是x,y提供了一个默认值为0,不传时x, y以值0来运算。传了就以实际值计算。
又如定义一个ajax
function ajax(url, async, dataType) { async = async !== false dataType = dataType || 'JSON' // ... }
自己用原生JS封装的一个简易ajax函数,url必填,async和dataType可选,即不填时默认同步请求和返回JSON格式数据。
再如定义一个矩形类
function Rectangle(width, height) { this.width = width || 200; this.height = height || 300; }
new时不传任何参数,也会创建一个默认宽高为200*300的矩形。
无论是calc,ajax函数还是Rectangle类,我们都需要在函数体内做默认值的处理,如果语言自身处理岂不乐哉? ES6提供了该特性(Default Parameters),以下是用ES6新特性重写的calc,ajax,Rectangle。
function calc(x=0, y=0) { // ... console.log(x, y) } calc(); // 0 0 calc(1, 4); // 1 4 function ajax(url, async=true, dataType="JSON") { // ... console.log(url, async, dataType) } ajax('../user.action'); // ../user.action true JSON ajax('../user.action', false); // ../user.action false JSON ajax('../user.action', false, 'XML'); // ../user.action false XML function Rectangle(width=200, height=300) { this.width = width; this.height = height; } var r1 = new Rectangle(); // 200*300的矩形 var r2 = new Rectangle(100); // 100*300的矩形 var r3 = new Rectangle(100, 500); // 100*500矩形
可以看到,ES6把默认值部分从大括号移到了小括号里,还减少了“||”运算,函数体从此瘦身了。参数默认值嘛,本来就应该在定义参数的地方,这样看起来简洁了不少。O(∩_∩)O
默认参数可以定义在任意位置,比如在中间定义一个
function ajax(url, async=true, success) { // ... console.log(url, async, success) }
定义了一个默认参数async,url和success是必传的,这时需要把中间的参数置为undefined
ajax('../user.action', undefined, function() { })
注意,不要想当然的把undefined改为null, 即使 null == undefined, 传null后,函数体内的async就是null不是true了。
以下几点需要注意:
1. 定义了默认参数后,函数的length属性会减少,即有几个默认参数不包含在length的计算当中
function calc(x=0, y=0) { // ... console.log(x, y) } function ajax(url, async=true, dataType="JSON") { // ... console.log(url, async, dataType) } console.log(calc.length); // 0 console.log(ajax.length); // 1
2. 不能用let和const再次声明默认值,var可以
function ajax(url="../user.action", async=true, success) { var url = ''; // 允许 let async = 3; // 报错 const success = function(){}; // 报错 }
另外比较有趣的是:默认参数可以不是一个值类型,它可以是一个函数调用
function getCallback() { return function() { // return code } } function ajax(url, async, success=getCallback()) { // ... console.log(url, async, success) }
可以看到这里参数success是一个函数调用,调用ajax时如果没有传第三个参数,则会执行getCallback函数,该函数返回一个新函数赋值给success。这是一个很强大的功能,给程序员以很大的想象发挥空间。
例如,利用这个特性可以强制指定某参数必须传,不传就报错
function throwIf() { throw new Error('少传了参数'); } function ajax(url=throwIf(), async=true, success) { return url; } ajax(); // Error: 少传了参数
以上所述就是本文的全部内容了,希望大家能够喜欢。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

C++中的默认参数提供对函数参数指定默认值的功能,从而增强代码可读性、简洁性和灵活性。声明默认参数:在函数声明中将参数后加上"="符号,后跟默认值。用法:函数调用时,若未提供可选参数,则会使用默认值。实战案例:计算两个数之和的函数,一个参数必填,另一个可填并有默认值0。优点:增强可读性、增加灵活性、减少样板代码。注意事项:只能在声明中指定,必须位于末尾,类型必须兼容。

优化C++默认和可变参数函数:默认参数:允许函数使用默认值,减少冗余。将默认参数放在最后以提高可读性。使用constexpr默认参数以减少开销。使用结构化绑定以提高复杂默认参数的可读性。可变参数:允许函数接受数量不定的参数。尽量避免使用可变参数,并在必要时使用。使用std::initializer_list优化可变参数函数以提高性能。

是的,C++中的默认参数功能允许您在函数调用时省略某些参数,当函数被调用且未提供这些参数时,则使用默认值,从而提升代码的灵活性、可读性和可维护性。

C++函数中默认参数需要注意:必须出现在参数列表末尾。不可为同一参数指定多个默认值。vararg可变数量参数不可拥有默认值。默认参数不可被重载函数的参数共享。

默认参数允许函数在调用时指定默认值,简化代码并提高维护性。默认参数的语法为:typefunction_name(parameter_list,typeparameter_name=default_value)。其中,type为参数类型,parameter_name为参数名称,default_value为默认值。示例中,add函数具有两个参数,其中num2的默认值为0,调用函数时可仅指定num1,num2将使用默认值,或同时指定num1和num2。

PHP是一种广泛使用的服务器端脚本语言,用于开发动态网页和应用程序。在PHP中,使用默认参数可以极大地提高代码的效率和简洁性。本文将探讨如何利用PHP的默认参数功能,以实现更高效的编程。1.默认参数的概念在PHP函数中,我们可以为参数设置默认值。当函数调用时未提供参数值时,将会使用默认值代替。这样做可以简化函数调用,减少冗余代码,提高可读性。2.默认参数

参数传递方式:按值传递(基本类型)和按引用传递(复合类型)。可选参数:允许指定参数值,但不是必需的。默认参数:允许指定可选参数的默认值。实战:通过示例函数展示如何使用可选和默认参数计算矩形面积。

默认参数用于简化函数调用、提供可选功能和提高代码可读性。具体场景包括:1.省略不常用的参数;2.为可选功能提供默认值;3.明确指定默认值提升代码可理解性。
