ES6语法:函数新特性(一)

ES6 函数

引言:

函数在任何语言中偶读很重要,java里面的函数通常叫做方法,其实是一个东西,使用函数可以简化更多的代码,代码结构看着更加清晰。今天我们来学学ES6语法中,函数有什么变化。

虽然现在的有比ES6更高的版本,但是主流一般都是ES6。es6中的函数相对于之前的版本提升了很多,相对来说在某些特定条件下,用新的函数很方便,也更简洁,功能性更加强大。

1.带参数默认值的函数。

我们都知道js是弱类型语言,不知道你有没有试过,或者学到过,js的函数声明过后,在调用这个函数的时候可以忽略这个函数所带的参数,就是说,声明的这个函数原本是带有参数的,但是呢,我在调用的时候是不需要传参的,这样也不会报错,而那些参数会有一个默认的值。来看看代码。

function testParameter(parameter1,parameter2){
console.log(parameter1);
console.log(parameter2);
}
testParameter();

这个是可以运行的,不会报错的,结果是什么呢?两个都是undefined。这就是弱类型语言的特点之一,与java不同,java会强制要求你输入参数。
一般来说,我们在实际项目中,如果有这种用法的话,这些参数都是有用的也就是需要参数有一个默认值。在es6之前,如果没有传参数,而且这个参数又是需要用到的,需要一个默认值,我们都需要自己判断这个参数是不是undefined,然后给这个参数设置默认值。这样自己写代码就比较麻烦。因此在es6的时候,函数可以这样声明,给函数的参数设置一个默认值。

function defaultParameter(parameter1,parameter2=30){
    console.log(parameter1);
    console.log(parameter2);
}
defaultParameter();

这样我们就给parameter2设置了一个默认的值为30,parameter1还是为undefined,虽然这种函数调用可以不传参数,我建议这个时候,这个没有设置默认值的参数还是尽量要传。参数的类型可以是任意类型,可以是字符串,数字,函数,对象,都可以设置一个默认的值。
还有一种情况,
如下:

function defaultParameter1(parameter1="这是第一个参数",parameter2){
return parameter1+parameter2;
}

console.log(defaultParameter1());

这段代码打印出来的是“这是第一个参数undefined”,然后我们传一个参数。

function defaultParameter1(parameter1="这是第一个参数",parameter2){
return parameter1+parameter2;
}

console.log(defaultParameter1(20));

你猜现在的结果是什么?你可能会说"20undefined",但是结果真不是这个,结果是"NaN",为什么?,仔细的同学就发现了,我们传的是一个20,而不是“20”,这个数字20和undefined相加的结果就成了NaN。当我们传“20”的时候,答案就是“20undefined”,但是我想说的是,如果这时我不想传第一个值怎么办,我想穿第二个值。往下看。

function defaultParameter1(parameter1="这是第一个参数",parameter2){
return parameter1+parameter2;
}

console.log(defaultParameter1(undefined,"这是第二个参数"));

把第一个参数设置成undefined就行了,并且只有设置成undefined才能使用默认的第一个参数,然后顺利给第二个值设置参数值。

2.参数默认值为表达式的函数。

前面说了带有默认值参数的函数,这节就为你带来,参数是表达式

来来来看代码

function expression(name,address=getStr()){
console.log(name+address);
}
function getStr(){
return "全栈学习笔记!"
}
expression("wx search");

这样也是可行的,结果你懂的,哈哈,如果你觉得能学到不少知识,就试试这个结果,精彩美文每天为你推送!
这里其实有一个有趣的,看下面;

function expression(name,address=name){
console.log(name+address);
}
function getStr(){
return "全栈学习笔记!"
}
expression("全栈学习笔记");

这样也是可以的,结果就是会打印出来两个“全栈学习笔记”,然后看看这个

function expression(name=address,address){
console.log(name+address);
}
function getStr(){
return "全栈学习笔记!"
}
expression(undefined,"全栈学习笔记");

我们将这个接收表达式的参数放在前面,就是相当于上面哪一种情况反过来,这样是不行的哦!
这一期的函数知识就分享到这,下一期将继续分享函数这一块的知识!如果你发现文中有什么错误或者对我有什么建议可以私信我哦!

(0)

相关推荐

  • 最全TypeScript 入门基础教程,看完就会

    想学习 TypeScript 的小伙伴看过来,本文将带你一步步学习 TypeScript 入门相关的十四个知识点,详细的内容大纲请看下图: 一.TypeScript 是什么 TypeScript 是一 ...

  • ES6 常用特性总结

    一.ES6 基本认识 1.什么是 ES6? ES6 指的是 ECMAScript 6.0,是JavaScript 语言的一个标准.其目标是使JavaScript 可以用来编写复杂的大型的应用程序,成为 ...

  • 熬夜7天,我总结了JavaScript与ES的25个知识点

    前言 说起JavaScript,大家都知道是一门脚本语言.那么ES是什么鬼呢?ES全称ECMAScript ,是JavaScript语言的国际标准. 最近,我总结了25条JavaScript的基础特性 ...

  • es6新增特性之函数参数默认值的优势-笔记

    ES6支持在定义函数的时候为其设置默认值: function foo(height = 50, color = 'red') { console.log(height); console.log(co ...

  • es6 快速入门 系列 —— 解构

    解构 我们经常使用数组或对象存储数据,然后从中提取出相关数据信息 试图解决的问题 以前开发者为了从对象或数组中提取出特定数据并赋值给变量,编写了很多重复的代码,就像这样: function demo1 ...

  • 9个实用的JavaScript开发技巧,你必须知道一下

    WEB前端开发社区 昨天 从Web开发到机器学习再到应用程序开发,JavaScript拥有大量的应用程序列表. 幸运的是,JavaScript提供了可以方便使用的全面功能列表,但是,其中许多功能和ha ...

  • JS 语法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性

    大前端技术之路 14篇原创内容 公众号 新特性 ES6(2015) 1. 类(class) class Man {   constructor(name) {     this.name = '小豪' ...

  • es6新增新特性简要总结

    es6简介 es6是在2015年6月正式颁布的新标准,es6基本上实现了所有ECMAScript 规范,以后每年的6月都会发布新版本,但改动不大. let 变量 使用let 关键字来申明的变量拥有以下 ...

  • ES6中常用的10个新特性讲解

    ECMAScript 6(ES6) 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ...

  • Python3.9测试版来咯,一起来体验一下这个语法新特性

    之前我们说过 Python在不断的壮大中 这不 前阵子就发布了 Python3.9a4 也就是 alpha 的第四个测试版本 一般来说 Python发布到 beta4 版本后 会正式推出 Python ...

  • 一课一题一语法:新概念英语第1册第27-28课

    [往期回顾] 一课一题一语法:新概念英语第1册第25-26课 下面是第25-26课的参考答案: [答案]C [简析]该题考查的是There be和方位介词的用法.第一空因为后面的bread是不可数的, ...

  • cad2022好用吗?cad2022新特性 AutoCAD LT 2022 for Mac最新版

    AutoCAD2022中文版是Autodesk公司的一款专业CAD绘图软件,aAutoCAD mac版可用于建筑设计.机械设计.电气设计.工程制图等各种行业! 全新功能 探索AutoCADLT®202 ...

  • golang1.16新特性速览

    今天是假期最后一天,明天起大家也要陆续复工了.golang1.16也在今天正式发布了. 原定计划是2月1号年前发布的,不过迟到也是golang的老传统了,正好也趁着最后的假期快速预览一下golang1 ...

  • 一课一题一语法:新概念英语第2册第66课

    [往期回顾] 一课一题一语法:新概念英语第2册第65课 [答案]B [简析]该题考查的是情态动词的用法.第一空的within two weeks提示了该动作可能是表将来的,后面的the past th ...

  • 一课一题一语法:新概念英语第2册第67课

    [答案]C [简析]该题考查的是动词have的用法.第一空根据后面的the whole afternoon可以判断,该动作是持续进行的,所以要采用doing.第二空根据soup可以判断,该处要表达的是 ...