iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScriptES6的函数拓展
  • 327
分享到

JavaScriptES6的函数拓展

2024-04-02 19:04:59 327人浏览 八月长安
摘要

目录es6函数拓展函数的默认参数reset参数name属性箭头函数ES6函数拓展 函数的默认参数 之前的写法: function count(x, y) {     return x

ES6函数拓展

函数的默认参数

之前的写法:

function count(x, y) {
    return x + y;
}
count(3);//因为只传递了参数x,y的默认值为undefined
//undefined + 3返回NaN

function count(x, y) {
    x = x || 0;
    y = y || 0;
    return x + y;
}
count(3);//3

function count(x, y) {
    x = x??0;
    y = y??0;
    return x + y;
}
count(3);//3

ES6写法:

ES6的写法简洁易读,能够让其他开发者快速了解参数类型,是否可省等信息,也不会对函数体代码造成过多负担,有利于后期优化重构

function count(x = 0, y = 0) {
    return x + y;
}
count(3);

注意事项:

1.使用默认参数,在函数体内不能重新命名同名变量

function count(x = 0, y = 0) {
    let x;//报错
    const y;//报错
}

参数默认值不是传值的,而是每次都重新计算默认表达式的值,也就是说参数默认值是惰性求值的

let num = 1;
function count(x = num + 1, y = 0) {
    return x;
}
count();//2

num = 99;
count();//100

参数也可以作为默认值,但是要注意顺序

正确示例:

function fn(x = 10, y = x) {
    console.log(x, y);
}
fn(20);//20 20
fn();//10 10

错误示例:

function fn(x = y, y = 10) {
    console.log(x, y);
}
fn();//报错

参数默认值为变量时,如果外部作用域有对应变量,那么这个参数就会指向外部变量(即参数的值等于外部变量的值)

let w = 10;
function fn(x = w) {
    let w = 20;
    return x;
}
fn();//10

注意:

//在()阶段,x已经赋值后,再改变w的值,也无法改变x的值
let w = 10;
function fn(x = 2) {
    w = 20;
    return x;
}
fn();//10

reset参数

ES6引入reset参数(形式为…变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了

reset参数搭配的变量是一个数组,该变量将多余的参数放入数组中

类似解构赋值,以后就不用call来使arguments调用数组方法了

function count(...values) {
    console.log(values);//[2, 5, 3]
    return values.reduce((acc,curr) => acc + curr);
}
add(2, 5, 3);//10

reset参数必须作为函数最后一个参数

function count(...value, a){}//报错

name属性

函数的name属性,返回该函数的函数名

function count(){}
console.log(count.name); //"count"

(new Function).name // "anonymous"

function foo() {};
foo.bind({}).name // "bound foo"

function foo() {};
foo.bind({}).name // "bound foo"

(function(){}).bind({}).name // "bound " // "bound "

(function(){}).name // ""

箭头函数

ES6中规定可以使用“箭头”(=>)定义函数

------------正常函数-------------
function count(x, y) {
    return x + y;
}
------------箭头函数-------------
let count =(x, y) => x + y;

函数体中可以直接书写表达式

let count = (x, y) => {
    y = 100;
    x = x * y;
    return x + y;
}
count(3, 4);//400

()中书写表达式,书写多个短语语句,最后一个“,”之后的值为返回值

let count = (x, y) => (x = 100, y = 10, x + y);
count(3, 4);//110

{}中书写多行语句

//报错 会将{}识别为函数体
let count = id => {id: id, name: "yunjin"};

//不会报错
let count = id => ({id: id, name: "yunjin"});

到此这篇关于javascript ES6的函数拓展的文章就介绍到这了,更多相关JavaScript ES6 函数 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScriptES6的函数拓展

本文链接: https://www.lsjlt.com/news/162855.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScriptES6的函数拓展
    目录ES6函数拓展函数的默认参数reset参数name属性箭头函数ES6函数拓展 函数的默认参数 之前的写法: function count(x, y) {     return x...
    99+
    2024-04-02
  • Kotlin拓展函数怎么用
    这篇文章主要介绍了Kotlin拓展函数怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Kotlin拓展函数怎么用文章都会有所收获,下面我们一起来看看吧。原理拓展函数是kotlin里一个比较常用的特性,例如我...
    99+
    2023-06-29
  • Python 拓展之特殊函数(lambd
    写在之前 今天给大家介绍几个比较特殊的函数,他们具有函数式编程的特点,有人将它们视为 Python 可进行 “函数式编程” 的见证,至于什么是函数式编程,不是本篇文章的重点,感兴趣的可以去了解一下。老读者可能都知道,我非常推崇 Pytho...
    99+
    2023-01-30
    函数 Python lambd
  • Kotlin原理详析之拓展函数
    目录原理限制不能访问私有成员拓展函数不能实现多态成员函数优先级高,拓展函数不能实现重写为什么要使用Kotlin中的扩展函数总结原理 拓展函数是kotlin里一个比较常用的特性,例如我...
    99+
    2024-04-02
  • C++ 函数库详解:系统功能的外延如何拓展
    c++++ 函数库可拓展系统功能,通过以下步骤使用:1. 引入标头文件;2. 声明函数库变量;3. 调用函数库函数。实战案例:自定义字符串操作函数库,添加逆序字符串函数,通过包含标头文件...
    99+
    2024-05-03
    c++ 函数库 标准库
  • ES6基础语法之数组拓展
    一、Array.of() 将参数中所有值作为元素形成数组: console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4] 参数的值可以为不同的...
    99+
    2024-04-02
  • 如何隐藏winxp部分文件拓展名只显示一部分文件的拓展名
    一般来说我们会选择隐藏掉拓展名,因为这样文件才能得到好的保护,不过有些时候我们需要认清文件的属性,因此拓展名的出现能让我们更快辨认文件的类型,但是能不能做到只显示一部分文件的拓展名呢Windows的“资源管理...
    99+
    2023-06-05
    winxp 文件拓展名 文件 部分 拓展
  • 详解JavaScriptes6的新增数组方法
    目录1. forEach()2. arr.filter()3. arr.every()4. arr.map()5. arr.some()总结 1. forEach() 遍历数组,无r...
    99+
    2024-04-02
  • 【Kotlin】扩展函数 ① ( 扩展函数简介 | 为 Any 超类定义扩展函数 | private 私有扩展函数 | 泛型扩展函数 | 标准函数 let 函数是泛型扩展函数 )
    文章目录 一、扩展函数简介二、为 Any 超类定义扩展函数三、private 私有扩展函数四、泛型扩展函数五、标准函数 let 函数是泛型扩展函数 一、扩展函数简介 为 现有类...
    99+
    2023-09-01
    kotlin 扩展函数 泛型扩展函数 私有扩展函数 Any扩展函数
  • PHP拓展的实现手段有哪些
    本文小编为大家详细介绍“PHP拓展的实现手段有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP拓展的实现手段有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。关于 PHP 扩展的几种实现手段php 原...
    99+
    2023-06-29
  • PHP函数的数据展示函数
    PHP是一种被广泛使用的编程语言,它的一个优点就是拥有丰富的函数库。这些函数可以大大简化开发者的工作,让开发工作更加高效。其中,PHP函数的数据展示函数在数据处理和展示方面非常有用。PHP函数的数据展示函数提供了一种方便的方法来展示和处理数...
    99+
    2023-05-18
    函数 PHP函数 数据展示
  • Vue3中ref与reactive的介绍和拓展
    本篇内容主要讲解“Vue3中ref与reactive的介绍和拓展”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中ref与reactive的介绍和拓展”吧!一、ref和reactive死死...
    99+
    2023-06-20
  • spring拓展之如何定义自己的namespace
    目录spring拓展 定义自己的namespace1.查看源码认识spring是怎么加载xml配置的2.定义自己的namespacespring-namespace实现自定义标签类1...
    99+
    2024-04-02
  • PHP 函数的扩展函数有哪些?
    是的,php 函数扩展函数可以修改或增强现有函数的行为,包括:user_error():报告用户可读的错误消息trigger_error():报告 php 错误消息set_error_h...
    99+
    2024-04-10
    php 函数扩展
  • React路由中的redux和redux知识点拓展
    目录路由中使用redux路由reducerRedux拓展state拓展action拓展静态action动态action异步action异步action中间件路由中使用redux 在路...
    99+
    2024-04-02
  • API 奇迹:赋予 CMS 无限拓展的魔力
    API(应用程序编程接口)的出现改变了这一格局,为 CMS 赋予了无限拓展的魔力。API 使外部应用程序和服务能够与 CMS 无缝交互,从而实现前所未有的灵活性和可扩展性。 无缝集成,扩展功能 API 允许 CMS 与各种其他应用程序和服...
    99+
    2024-04-02
  • kotlin扩展函数
    一. 概念 Kotlin的扩展函数是一种特殊的函数,允许在不修改原始类定义的情况下向现有类添加新的函数。 扩展函数可以像普通函数一样使用,并且可以在任何地方调用。定义一个扩展函数,可以使用以下语法: ...
    99+
    2023-09-23
    kotlin android
  • Python基础09 面向对象的进一步拓展
    我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。调用类的其它信息上一讲中提到,在定义方法时,必须有self这一参数。这个参数表示某个对象。对象拥有类的所有性质,那么我们可以通过self,调用类属性。...
    99+
    2023-06-02
  • PHP 函数的未来发展趋势和展望
    php 函数的未来发展趋势包括:函数指针,用于将函数作为参数传递,增强灵活性。匿名函数,动态创建函数,简化代码。函数多态,同名函数根据参数类型具有不同行为,提高可扩展性。未来,php 函...
    99+
    2024-04-13
    php 函数趋势 高可扩展性
  • Cacti系统如何处理网络拓扑图的展示
    Cacti系统通过使用SNMP协议来监控网络设备,获取设备的各种性能数据,并根据这些数据生成网络拓扑图。在Cacti系统中,用户可以...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作