学习
实践
活动
工具
TVP
写文章

ECMAScript6基础学习教程(四)函数

如果函数代码块只有一条语句,那么,可以省略函数大括号{}和关键字return。 箭头函数最大特点,就是函数没有this对象,因此,箭头函数有如下特点: 箭头函数不能用作构造函数 箭头函数不能使用call(), apply(), bind()方法 不可以使用arguments对象 箭头函数中如果调用 hello world" log("Hi"); // "Hi world" // null不会被判断为空值 log(null, "javascript"); //"null javascript" 在ECMAScript6 函数的rest参数 函数的rest参数格式为function(...args)或,function(x, y, ...args),args为数组,保存的是函数剩余变量(注意:rest参数必须是函数最后一个参数 function test(...args) { return [1, 2, 3, ...args]; } test(4, 5, 6, 7); // [1, 2, 3, 4, 5, 6, 7] 下一节:ECMAScript6

9120

【译】《Understanding ECMAScript6》- 第二章-函数

函数的[[Construct]]被执行时,new.target将指向new操作符调用的函数(也就是本例中的Person函数),也就是新创建实例的构造函数。 译者注:非严格模式下的块级域函数本质上已经不是块级域函数了,只是在块级代码内声明的普通函数。 箭头函数 箭头函数是ES6非常有趣并且非常重要的一个模块。顾名思义,箭头函数使用一个箭头=>声明。 箭头函数与普通函数一样具有name属性。 语法 箭头函数的语法针对不同需求有很多变种。所有的变种遵循以下规范:参数=>函数体。参数和函数体可以根据需求变换不同的形式。 箭头函数被设计的初衷是在某些应用场景下取代匿名函数,它们不能作为构造函数使用,不具备很长的生命周期。箭头函数的最佳应用场景是作为常规函数的回调函数使用。 箭头函数是ES6的一项重大改进。箭头函数的提出是为了取代匿名函数的应用场景,它有更加简洁的语法,this的语义绑定,并且没有arguments对象。箭头函数的this不能被修改,不能作为构造函数使用。

39870
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ECMAScript6 解构赋值

    解构赋值_1 函数返回的多个值 ? 解构赋值_2 定义函数参数,通过解构赋值的方式,我们能很轻松的提取 JSON 对象中想要的参数 ? 解构赋值_3 函数参数的默认值,传统的方式如下: function me(a){ var name; if(a === undefined){ name = "Nian糕

    18340

    【译】《Understanding ECMAScript6》- 简介

    即使浏览器和Node.js通过扩展对象和函数来增加新功能,但语言仍然保留ECMAScript的核心功能,所以ECMA-262的发展对JavaScript语言是至关重要的。 第二章: 函数,介绍各种函数有关的改动,包括箭头函数(arrow function form)、默认值参数(default parameters)、剩余参数(rest parameters)等等。

    37690

    ECMAScript6 数组去重

    数组去重这个问题无论是在面试当中,还是实际项目中,出现的频率都挺多的,而我们以往的解决方式,就是通过新建一个空的数组,通过 indexOf 方法进行新数组和原数...

    18730

    ECMAScript6基础学习教程(六)类

    实际上,Class只是简化了对象原型方法的语法,实现原理依旧是ES5构造函数和对象原型。但是,ES6中类的继承,和ES5原型链继承略有不同。 1. Class语法 用ES6的class定义类: class Vehicle { // 构造函数 constructor(name) { this.name = name; 必须有constructor方法,如果没有定义,会默认添加一个空的构造函数。 正因为ES6做继承时,是先创建父类实例,因此,有如下两个特性: 继承时,子类一旦显性声明了constructor函数,就必须在构造函数里面调用super()方法,从而取得父类this对象(也可以不显性声明 constructor函数,ES6会在默认生成的构造方法里面调用super())。

    15310

    ECMAScript6基础学习教程(八)Promise

    但是,通过回调函数处理异步事件有很多不确定性,并且容易陷入“回调地狱”-嵌套太深。 then()和catch()函数都会默认返回一个promise对象。 如果没有给then()传递函数作为完成处理函数参数,还是会有替代的默认处理函数,并且,该默认函数会把接受到的值传递给下一个promise对象。 getPromise(40, true). console.log("the first resolved status: " + value); // 返回一个promise对象,该promise决议结果会决定下一个then()函数应该调用哪个回调函数 并且,Promise还提供了静态函数帮助解决更复杂的异步编程场景。 4.

    18520

    ECMAScript6基础学习教程(五)对象

    ==属性名 例如: var foo = "abc"; var obj = { name: 'nicole', foo }; //相当于是 var obj = {foo: foo} 如果属性值是函数 做对象拷贝时,除了Object.assign(),更简便的方法是使用“扩展运算符”(参考上一节文章ECMAScript6基础学习教程(四)函数 - 扩展运算符)。

    22820

    ECMAScript6基础学习教程(七)模块

    import命令可以定义在模块顶层中的任意位置(import语言有提升效果,类似变量/函数声明提升) 3.ES6模块加载是指引用 CommonJS模块输出的是值拷贝,但是,ES6模块输出的是值引用(无论输出值是简单类型

    10610

    Node.js | ECMAScript6 等 | 笔记

    package-lock.json: 在 npm install时生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号,模块下...

    12840

    ECMAScript6 基础知识点(上)

    , c) // 1 2 3 let {a, b, c} = {"a": 4, "c": 5, "b": 6} console.log(a, b, c) // 4 6 5 关于更多解构赋值的用法可参考 ECMAScript6 模板字符串 关于模板字符串的更多使用方式,可参考 Type Script 的基本概念及常用语法 这篇博文 06 Number.isNaN() 函数 Number.isNaN() 函数:用于判断传入的是否是非数值 ,属于 window 对象下的一个方法,而在 ES6 中,isNaN 方法从全局函数移植到 Number 对象上,window.isNaN 函数会把非数值的参数转化成数值再进行判断,而Number. isNaN 只对数值类型有效,非数值类型的参数一律返回 false,所以我们在使用之前必须指明它是 Number 对象下的函数,否则会被默认为 window 下的函数 07 字符串扩展的新函数 repeat Array.of() 函数,将一组值转换成数组 Array.of(1, 2, 3, 4, 5) // [ 1, 2, 3, 4, 5 ] Array.from() 函数,将类似数组的对象或可遍历的对象转换成真正的数组

    19631

    ECMAScript6 基础知识点(下)

    name]: 'Nian糕' } person[name] // 'Nian糕' person.name // undefined 02 Proxy Proxy 对象用于拦截并代理目标对象,包括函数 ownKeys() 方法,用于拦截 Object.ownKeys() 对过滤对象属性的遍历;has() 方法,拦截 key in object 的操作,结果会返回一个布尔值;apply() 方法,代理对象为函数时进行拦截 // name Nian糕 // age 17 07 WeakMap 结构 WeakMap 结构和 Map 结构很类似,不同点在于 WeakMap 结构的键名只支持引用类型的数据,即数组,对象,函数

    16510

    ECMAScript6介绍及环境搭建

    箭头函数提供了一种更加简洁的函数书写方式。 this 对象,是定义函数时的对象,而不是使用函数时的对象。 第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。 ,函数前面的async关键字,表明该函数内部有异步操作。 调用该函数时,会立即返回一个Promise对象。 9.3、语法 async函数返回一个 Promise 对象。 async函数内部return语句返回的值,会成为then方法回调函数的参数。

    6140

    ECMAScript6基础学习教程(二)块级作用域

    ES6出现之前,只有函数可以形成作用域。而ES6中新增了块级作用域概念。 let和const命令可以构成一个块级作用域。 下一节:ECMAScript6基础学习教程(三)变量的解构赋值

    8710

    【译】《Understanding ECMAScript6》- 第五章-Class

    如果派生类内显式定义了构造函数,那么构造函数内部必须使用super()调用父类,否则会产生错误。 如果构造函数没有被显式定义,class会默认隐式定义一个构造函数,并且构造函数内部使用super()调用父类,同时传入生成class实例时的所有参数。 所有的参数按顺序被传入父类的构造函数。笔者建议始终显式定义构造函数,以保证参数的正确性。 根据第二章的讲诉,使用new调用构造函数时,new.target的取值是构造函数函数名。 上述代码中,执行new Rectangle(3, 4)时,new.target等于Rectangle。 另外,class只能作为构造函数使用,也就是只能被new调用,而不能作为常规函数执行。 Class继承机制允许从class、函数,甚至表达式生成派生类。

    35360

    【译】《Understanding ECMAScript6》- 第七章-Promise

    随后,事件对应的响应函数被加入执行序列的末尾。这是JavaScript语言实现异步编程最基本的方式:事件响应函数只会在对应的事件触发后执行,并且响应函数运行在适当的执行上下文内。 回调函数 Node.js使用回调函数实现异步编程。回调函数模式与事件驱动相同的地方是,指定代码在对应的条件触发后才会被执行。不同的是,延迟执行的回调函数作为一个参数被传入指定的函数。 ; 上述代码使用Node.js经典的error-first回调函数。readFile()函数从硬盘中检索第一个参数指定的文件,检索完毕后执行第三个参数指定的回调函数。 回调函数在应对复杂需求时显得捉襟见肘。比如同时运行两个异步操作,两者都执行完毕后再调用回调函数;或者两个异步操作中只需要第一个执行完毕后启动回调函数。 与事件驱动模式的响应函数和回调函数模式的回调函数不同,Promise机制下的异步函数返回一个Promise,如下: // readFile promises to complete at some point

    36060

    【javascript】您好, 您要的ECMAScript6速记套餐到了 (一)

    : Array构造函数因为接收参数的不同行为表现差异非常巨大 1. 1,2,3] 【注意】 函数的reset参数可以看做是扩展运算符的“逆运算” name属性 函数可取name属性 function fn() {} fn.name // "fn" 箭头函数 ES6引入了箭头函数 使我们能通过一种更为简洁的方式书写函数 2. this却恰好相反, this的绑定是动态的, 是运行时决定的, 这有时候就导致了让人苦恼的this绑定丢失问题 用一段代码展示一下普通函数(相比于箭头函数)所存在this绑定丢失的问题 function 因为setTimeout里的函数是异步执行的,当调用foo.call({ id: 42 })的时候setTimeout里的函数并没有立即得到执行, 所以setTimeout()调用的时候,它运行在与所在函数完全分离的执行环境上

    25070

    ECMAScript6基础学习教程(三)变量的解构赋值

    小结 (1) 函数参数的解构赋值 解构赋值常用应用场景是函数参数赋值。利用解构赋值,可以简化参数取值。 let obj = {a: {b:1}}; let {...x} = obj; // x==={a: {b:1}} obj.a.b = 2; // x ==={a: {b:2}} 下一节:ECMAScript6 基础学习教程(四)函数

    9840

    【译】《Understanding ECMAScript6》- 第八章-Module

    class必须有明确的类名/函数名。 匿名函数/类不能使用上述语法导出; export不仅可以在声明语句前使用,也可以用在引用前面,如上述代码中的multiply; 没有被明确导出的变量、函数、class被称为当前模块的私有成员,不能被外部代码访问 ,如上述代码中的substract()函数。 as add }; 上述代码中sum()函数在被导出时将接口函数名更改为add(),其他模块在导入此接口函数时必须使用add标识符,如下: import { add } from "example"; default关键字表明这是一个缺省接口,并且缺省接口的函数不需要指定具体的函数名,因为模块本身就代表着此接口函数

    35860

    【译】《Understanding ECMAScript6》- 第三章-Object

    函数初始化的缩写模式 ES6同样精简了对象内函数的声明语法。 不同的JavaScript类库实现mixin模式的函数取名迥异,其中extend()和mix()是使用面很广泛的函数名。 通过Object.getPrototypeOf()调用其原型的同名函数后追加字符串", hi!"。.call(this)确保原型函数中的作用域为friend。 super只能在对象方法中使用,不能在常规函数和全局作用域内使用,否则会抛出语法错误。 方法 在ES6之前的版本中,方法并没有准确的定义。通常认为方法是一种函数类型的对象属性。 Object.assign()函数可以进行对象多重属性的克隆,统一mixin模式的操作流程。 Object.setPrototypeOf()函数可以更改对象的原型。

    37860

    扫码关注腾讯云开发者

    领取腾讯云代金券