Es6中箭头函数与普通函数的区别】的更多相关文章

Es6中箭头函数与普通函数的区别? 普通function的声明在变量提升中是最高的,箭头函数没有函数提升 箭头函数没有属于自己的this,arguments 箭头函数不能作为构造函数,不能被new,没有property 不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数 不可以使用 new 命令,因为: 没有自己的 this,无法调用 call,apply 没有 prototype 属性 ,而 new 命令在执行时需要将构造函数的 prototype 赋值给新的对象的…
我们知道在ES6中,引入了箭头函数,其本质就是等同有ES5中的函数.类似于下面的写法: let test1=() => “abc”; let test2=() => { return “abc”}; let sum=(a,b) => a+b; 比如上面的3个ES6的箭头函数的写完,如果用ES5就像下面的写完一样. 其实其等同于下面的ES5的写法: function test1() { return "abc" } function test2(){ return &q…
最近在写RN相关的东西,其中涉及到了redux-saga ,saga的实现原理就是ES6中的Generator函数,而Generator函数又和迭代器有着密不可分的关系.所以本篇博客先学习总结了iterator相关的东西,然后又介绍了Generator相关的内容,最后介绍了使用Generator进行异步编程.本篇博客所涉及的示例使用TypeScript语言编写,当然所涉及的特性是基于ES6规范的,使用TS语言不影响来阐述和总结ES6的相关特性.下篇博客准备系统梳理一下saga相关的内容. 一.迭…
普通函数中的this: 1. this总是代表它的直接调用者, 例如 obj.func ,那么func中的this就是obj 2.在默认情况(非严格模式下,未使用 'use strict'),没找到直接调用者,则this指的是 window 3.在严格模式下,没有直接调用者的函数中的this是 undefined 4.使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象 箭头函数中的this 默认指向在定义它时,它所处的对象,而不是执行时的对象, 定义它的时候,可能…
var aaabbb = 'kkkooo' setTimeout(()=>{ var aaaa = 'kkkk'; console.log(this) },1000); 因为据我了解,箭头函数指向是创建时候上下文的this指向,所以天真的认为上述函数中在箭头函数内部创建的变量aaaa也会在window对象中找到.可惜我错了. *****************************************************************以上为问题再现**************…
一.let 1.基本用法 ES6 新增了let命令,用来声明变量. let 的用法类似于 var,但所声明的变量只在 let 命令所在的代码块内有效(一个“{}”相当于一个代码块) { let a = 123; var b = 123; } a // ReferenceError: a is not defined. b let 在 for 循环中的运用:生成十个按钮,每个按钮点击时依次弹出 1-10 for(let i=1;i<=10;i++){ var btn=document.create…
for in 用与循环遍历对象中的属性键值 for of用于循环遍历出数组中的属性值 for in 也可以遍历数组,但是局限是他会把数组的其他属性键值也会遍历出,例如给数组添加一个属性arr.name = 'zhaokaikai'; for of也可以用于遍历对象但是需要 用Object.keys()将对象中key取出来 具体实现代码请自行百度,此处只提供自己方便记忆的思路,谢谢…
转载这篇ES6的箭头函数方便自己查阅. ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 基础语法 (参数1, 参数2, …, 参数N) => { 函数声明 } (参数1, 参数2, …, 参数N) => 表达式(单一) //相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; } // 当只有一个参数时,圆括号是可选的: (单一参数) => {函数声明} 单一参数 => {函数声明} // 没有参…
前言 相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在看他们之间的区别之前,我们先来看看它们的用法. ES6 import和export的用法 ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范.commonjs主要应用于服务器,实现同步加载,如nodejs.AMD规范应用于浏览器,如requirejs,为异步加载.同时还有CMD规范,为同步加载方案如seaJS. ES6在语言规格的层面上,实现了模块功能,而且…
关于函数表达式中的this:自动引用正在调用当前方法的.前的对象1.obj.fun()中的this fun中的this -> obj2.new Fun() Fun中的this -> 正在创建的新对象3.fun()和匿名函数自调 this -> window4.类型.prototype.fun() fun中的this -> 将来调用fun的.前的子对象,子对象一定是当前类型5.如果this不是想要的对象 fun.call(替换this的对象),相当于对象.fun()ex:键盘事件 /…
1.普通函数中的this总是指向调用它的那个对象, 箭头函数没有自己的this,他的this永远指向其定义环境,任何方法都改变不了其指向,如call().bind().apply().(正是因为它没有this,所以也就不能用作构造函数,也没有原型对象) 2.箭头函数不能当作构造函数,也就是说,不能使用new命令,否则会报错. 3.箭头函数不能使用yield命令,因此箭头函数不能用作genertor函数. 4.箭头函数没有原型属性. 5.箭头函数不能使用argumen对象,该对象在函数体内不存在.…
在讲箭头函数中的this之前我们先介绍一下普通函数中的this.      普通函数中的this: (1)this指向它的直接调用者 (2)默认的,非严格模式下,没找到直接调用者则指向window (3)严格模式下,没直接调用者的this是undefined (4)使用call,apply,bind绑定对象,则this指向被绑定的对象. ES5中 window.val = 1; var obj = { val: 2, dbl: function () { this.val *= 2; val *…
x => x * x 上面的箭头函数相当于: function (x) { return x * x; } 箭头函数相当于匿名函数,并且简化了函数定义. 箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ ... }和return都省略掉了. 还有一种可以包含多条语句,这时候就不能省略{ ... }和return: x => { if (x > 0) { return x * x; } else { return - x * x; } } 如果参数不是一个,就需要用括号()括起来:…
箭头函数的语法 function fn1() { console.log(1); } let fn2 = () => { console.log(2); } fn1()//1 fn2()//2 //箭头函数: 形参=>返回值 //单个形参的最简写法,箭头函数作为匿名的回调函数是可以省略let fn ,既(形参)=>{语句} let fn = nub => nub * 2 console.log(fn(10));//20 //多个形参,语句单一.(形参1,形参2)=>返回值 l…
箭头函数与普通函数的区别 1.语法上更加简洁.清晰 基本语法: // 关于箭头函数的参数 // 如果箭头函数没有参数,直接写一个括号即可 let fun1 = () => { console.log('111') }; // 如果箭头函数只有一个参数,可以省略括号 let fun2 = name => { console.log('Hello ' + name); }; // 如果箭头函数有多个参数,用逗号隔开,写括号里面 let fun3 = (a, b, c) => { consol…
作者:Sequoia McDowell 2016年01月16日 ES6来啦!随着越来越多的代码库和思潮引领者开始在他们的代码中使用ES6,以往被认为是"仅需了解"的ES6特性变成了必需的代码常识.这不仅仅是新的语法学习 - 在许多范例中, ES6中新的语言特性可以让在ES5中写起来非常麻烦的表达变得更加简单,进而鼓励了新表达方式的使用.下面我们将关注一个这样简洁表达的使用范例:ES6中的箭头函数如何使高阶函数的书写更加简便. 高阶函数是至少具有以下两种功能之一的函数: 使用一个或多个函…
---恢复内容开始---   绪 言 ES6 大家对JavaScript中的函数都不陌生.今天我就为大家带来ES6中关于函数的一些扩展方式和方法. 1.1函数形参的默认值 1.1.1基本用法 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法.如下代码: function func(x,y){ y = y || "tom"; console.log(x,y); } func("hello"); //hello tom func("hello&…
首先复习下普通函数里的this指向: function test(){ console.log(this) } test() 你会秒杀的毫无疑问的回答:window,针对普通函数:谁调用了函数  函数里的this就指向谁,test()等价于window.test(),所以是window var name="outername" var o={ name:"innername", getname:function(){ console.log(this.name) }…
ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面. function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello ES6 的写法比 ES5 简洁许多,而且非常自然.下面是另一个例子. function Point(x = 0, y = 0) { this.x =…
箭头函数感性认识 箭头函数 是在es6 中添加的一种规范 x => x * x 相当于 function(x){return x*x} 箭头函数相当于 匿名函数, 简化了函数的定义. 语言的发展都是倾向于简洁 对人类友好的, 减轻工作量的. 就相当于我最钟情的python, 有很多类似之处, 在 关于promise 文章中我会和Python 框架中的tornado 中的异步进行对比的, 很相似. 箭头函数有两种格式, 一种只包含一个表达式,没有{…} 和 return . 一种包含多条语句, 这…
ES6中新增了箭头函数这种语法,箭头函数以其简洁性和方便获取this的特性.下面来总结一下他们之间的区别: 普通函数下的this: 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window, 在严格模式下,没有直接调用者的函数中的this是 undefined使用 call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象 箭头函数中的this: 箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),…
一.设置默认参数 ES6之前,给函数设置默认参数是这样做的: function fn(a) { if(typeof y === undefined){ a = a || 'hello'; } console.log(a); } fn('hi'); // 'hi' fn(false); // false 这里之所以要判断一下,是因为我们本意是函数没有传值时才给参数 a 设置为 'hello',但是如果调用函数时传入了布尔值 false,也会把参数 a 设置为 'hello'. 在 ES6 中允许为…
今天要介绍的是ES6中的箭头函数. 语法 我们先来看看箭头函数的语法: ([param] [, param]) => { statements } param => expression 1 2 3 4 5 6 1 2 3 4 5 6 param 是参数,根据参数个数不同,分这几种情况: () => { … } // 零个参数用 () 表示: x => { … } // 一个参数可以省略 (): (x, y) => { … } // 多参数不能省略 (): 示例 我们再来看看…
新事物也是有两面性的,箭头函数有他的便捷有他的优点,但是他也有缺点,他的优点是代码简洁,this提前定义,但他的缺点也是这些,比如代码太过简洁,导致不好阅读,this提前定义,导致无法使用JS进行一些ES5里面看起来非常正常的操作. 本质来说箭头函数没有自己的this,它的this是派生而来的,根据"词法作用域"派生而来. 由于箭头函数在调用时不会生成自身作用域下的this和arguments值,其持有外部包含它的函数的this值,并且在调用的时候就定下来了,不可动态改变,下面我就总结…
四种基本用法 1. 一般方法中,this代指全局对象 window 2. 作为对象方法调用,this代指当前对象 3. 作为构造函数调用,this 指代new 出的对象 function test(){ this.x = 1; } var o = new test(); alert(o.x); 4. 调用方法的apply和call方法,可以改变函数的调用对象/作用域 (this)用法: f.apply([thisObj [,argArray] ]); f.call([thisObject[,ar…
一.es6的箭头函数es6箭头函数内部没有this,使用时会上朔寻找最近的this不可以做构造函数,不能使用new命令,因为没有this函数体内没有arguments,可以使用rest参数代替不能用yield,不能使用generator函数二.疑问下面代码中的箭头函数arrows的this指向window let obj = { aaa: '123', arrows : () => { console.log('arrows',this); }, func : function () { con…
1.箭头函数 在es6中,单一参数的单行箭头函数语法结构可以总结如下: const 函数名 = 传入的参数 => 函数返回的内容,因此针对于 const pop = arr => arr.pop(),其中 pop是函数名, arr是传的参数 , =>之后的内容是函数返回的内容,该函数相当于: var pop = function(arr){   arr.pop()} //箭头函数 const add1 = (a,b) => a+b; console.log(add1(2,2));…
箭头函数 一个参数 // 只有一个参数 // f : 函数名称 // v : 函数参数 // v+v : 函数内容 let f=v=> v+v console.log(f(10)) //20 两个参数 // 两个参数需加小括号 let ff=(v1,v2)=> v1+v2 console.log(ff(10,20)) 多个语句 // 有多个语句的时候需要加大括号 // 有多个语句的时候return不能省略 let fff=(a,b,c)=> { console.log(a) return…
ES6为Array增加了from函数用来将其他对象转换成数组. 当然,其他对象也是有要求,也不是所有的,可以将两种对象转换成数组. 1.部署了Iterator(迭代器)接口的对象,比如:Set,Map,Array. 2.类数组对象,什么叫类数组对象,就是一个对象必须有length属性,没有length,转出来的就是空数组. 具体用法 Array.from可以接受三个参数 我们看定义:Array.from(arrayLike [, mapFn [, thisArg]]) arrayLike:被转换…
函数声明: function add(a, b) { // ... } 1.顾名思义,声明一个函数, 用关键字 “function” 来告诉,这是一个函数. 2.任何地方,想用就可以拿过来使用 函数表达式: var add = function (){ //... }; 表达式, 最先想到的赋值表达式,如 a = b; 1.表达式与声明的区别之一, 末尾有无 分号(;) 结束. 2.表达式不同于声明的区别之二: 函数表达式的函数并不是想用就可以调用, 他要等到程序执行到他的时候才可以使用. 在函…