基本不同 1.写法不同,箭头函数使用箭头定义,普通函数中没有 .箭头函数都是匿名函数,普通函数可以有匿名函数,也可以有具体名函数,但是箭头函数都是匿名函数。...在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例。箭头函数中没有this,声明时捕获其所在上下文的this供自己使用。...所以箭头函数结合call(),apply()方法调用一个函数时,只传入一个参数对this没有影响。...,不能使用new 关键字,因为new关键字是调用函数对象的constructor属性,箭头函数中没有该属性,所以不能new function fn1(){ console.log...fn1() new fn2() 输出如下 image.png 5.箭头函数不绑定arguments,取而代之用rest参数…解决 6.箭头函数不可做Generator函数
原文地址:https://dev.to/bhagatparwinder/arrow-function-and-the-new-arguments-super-keyword-2d1l 我们之前已经学过了箭头函数以及它的...当涉及到 this 关键字的时候箭头函数会表现的不同,同时它也没有绑定的 arguments、new 和 super 关键字。...箭头函数不能用作构造器,当和 new 一起使用时会报错。...Super 按照 ES 规范箭头函数不能与 super 关键字一起使用。...prototype 属性 var Foo = () => { }; console.log(Foo.prototype); // undefined • 箭头函数不能用作 generators
最近在代码中用到大量箭头函数,例如 result = page.stream().map(p -> { //这个p相当于list里的每一项,map需要return Map<String, Object...product.getReCover()); tempMap.put("productId", product.getId()); } }); 然后今天写后台管理系统的时候发现前端的箭头函数我还没用过...真香~ var newArray = [2, 4, 6, 8, 10] //var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象 var newArrays = newArray.map
箭头函数(★★★) ES6中新增的定义函数的方式。...this关键字,箭头函数中的this,指向的是函数定义位置的上下文this const obj = { name: '张三'} function fn () { console.log(...this);//this 指向 是obj对象 return () => { console.log(this);//this 指向 的是箭头函数定义的位置,那么这个箭头函数定义在...this,箭头函数中的this指向是它所定义的位置,可以简单理解成,定义箭头函数中的作用域的this指向谁,它就指向谁 箭头函数的优点在于解决了this执行环境所造成的一些问题。...,而对象没有作用域的,所以箭头函数虽然在对象中被定义,但是this指向的是全局作用域 剩余参数(★★) 剩余参数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数
今天我来总结一下ES6 对函数做的一些处理。结合我ES5的函数特征,能够让我们根据实际情况,来很好的完成我们的项目需求。 一、ES6的箭头函数 1....带参数的箭头函数 let fun = (x) => x console.log(fun(2)) //2 这种写法等同于ES5的 function fun(x){ return x } console.log...fun = ()=>({name:"jhon",age:23}); console.log(fun()) //返回对象 {name:"jhon",age:23} 6.在对象的方法中我们可以这样简化函数...1.箭头函数不可以用new 在去实例化对象,如果你这样操作,将会报错 let fun = (x = 0,b = 0)=>{console.log(x+b);}; let funClone = new...> { // 使用箭头函数 console.log(this); },1000) }, fuc:function(){ setTimeout
1、从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。...虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。...2、从实现上看,vbtl在构造函数调用后才建立,因而构造函数不可能成为虚函数 从实际含义上看,在调用构造函数时还不能确定对象的真实类型(因为子类会调父类的构造函数);而且构造函数的作用是提供初始化...V P T R的状态是由被最后调用的构造函数确定的。这就是为什么构造函数调用是从基类到更加派生 类顺序的另一个理由。 ...但是,当这一系列构造函数调用正发生时,每个构造函数都已经设置V P T R指向它自己的 V TA B L E。
,但在语法上有所不同,不能在所有情况下使用。...主要区别在于函数的编写方式。 以下是我们可以根据其语法从上述代码中得出的观察结果: 它不包含 function 关键字。 它没有 函数名 ,这意味着这些是匿名函数。 引入了箭头 => 符号。...根据箭头函数的语法,如果函数只接受一个参数,可以忽略括号()。如果函数只包含一条语句,则可以忽略块{},最后其实也可以忽略return ,如果函数只包含一个语句。 2....与普通函数相比,主要区别在于 this 的声明。 箭头函数没有自己的 this 变量; this 在箭头函数中使用时会得到词法解析。 在创建阶段之后不久,执行阶段开始。...这些函数有自己的作用域,函数内部声明的任何变量都不能在函数外部访问。 这些函数也不适用于 call、apply 和 bind 方法,这些方法通常依赖于作用域。
箭头函数 1.1 认识箭头函数 传统定义函数: const aaa = function(parse) { } 对象字面量中定义函数: const obj = { bbb(parse...) { } } Es6中箭头函数; const ccc = ()=>{ } 箭头函数的参数和返回值 放入两个参数: const obj = (num1, num2) => {...('2'); } 函数中只有一行代码可以省略return const mul = (num1, num2) => num1 * num2; console.log(mul); 箭头函数中this使用 什么时候使用箭头函数...function(){ console.log(this); }, 1000); setTimeout(() => { console.log(this); }, 1000); 结论:箭头函数没有...this,上面箭头函数中的this是window中的this const obj = { aaa() { setTimeout(() => { console.log
TypeScript 箭头函数 Lambda 函数也称之为箭头函数。箭头函数表达式的语法比函数表达式更短。...函数只有一行语句: ( [param1, param2,…param n] )=>statement; 示例 : const add =(a:number, b:number):number => a+...b; console.log(add(1, 2)); 箭头函数 + {} 示例 const add =(a:number, b:number):number=>{ console.log("add
Js箭头函数 箭头函数是ES6新增的语法,提供了一种更加简洁的函数书写方式,类似于匿名函数,并且简化了函数定义。 完整写法 完整写法类似于匿名函数,省略了function关键字。...由于箭头函数没有自己的this指针,使用apply、call、bind仅能传递参数而不能动态改变箭头函数的this指向。...箭头函数不能用作构造器,使用new实例化时会抛出异常。...var s = () => {}; new s(); // Uncaught TypeError: s is not a constructor 没有原型属性 箭头函数没有prototype属性。...var s = () => {}; console.log(s.prototype); // undefined 不能用作函数生成器 箭头函数不能用作Generator,yield关键字通常不能在箭头函数中使用
箭头函数 箭头函数表达式没有自己的this,arguments,super或new.target。...箭头函数不能使用new操作符 箭头函数不能用作构造器,和 new一起用会抛出错误。...var Foo = () => {}; var foo = new Foo(); // TypeError: Foo is not a constructor 箭头函数没有prototype属性 箭头函数不能用作生成器...yield 关键字通常不能在箭头函数中使用(除非是嵌套在允许使用的函数内)。...因此,箭头函数不能用作生成器。
一、区别 箭头函数是匿名函数,不能作为构造函数,不能使用new let FunConstructor = () => { console.log('lll'); } let fc = new...return 2; } console.log(a.prototype); // undefined console.log(b.prototype); // {constructor: ƒ} 箭头函数不能当做...Generator函数,不能使用yield关键字 二、JS this指向问题 普通函数的this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象...function fn(){ this.num = 1; } var a = new fn(); console.log(a.num); //1 为什么this会指向a?...2. new操作符会改变函数this的指向问题。
有一个函数很短,比如这样: function getData() { return { data: 1 } } console.log(getData()) // { data: 1 } 想用...ES6箭头函数语法简化一下,于是写成这样: const getData = () => { data: 1 } console.log(getData()) // undefined 怎么会是呢?
认识箭头函数 es6 新增了使用胖箭头(=>)语法定义函数表达式的能力,很大程度上,箭头函数实例化的函数对象与正式的函数表达式创建的函数对象行为是相同的。...任何可以使用函数表达式的地方,都可以使用箭头函数: // 普通函数 let sum = function(a, b) { return a + b; } // 箭头函数 let sum1 =...省略大括号箭头后面就只能有一行代码; 省略大括号会隐式返回这行代码的值; 省略大括号不能写return。...箭头函数不能使用arguments 如果函数是使用箭头语法定义的,那么传给函数的参数将不能使用 arguments 关键字访问: // 普通函数 let sum = function() { return...那为什么是undefined而不是11呢?
箭头函数基本使用 // 箭头函数: 也是一种定义函数的方式 // 1.定义函数的方式: function const aaa = function () { } // 2.对象字面量中定义函数...const obj = { bbb() { } } // 3.ES6中的箭头函数 // const ccc = (参数列表) => { // // }...const ccc = () => { } 带返回值的箭头函数 // 1.参数问题: // 1.1.放入两个参数 const sum = (num1, num2) => { return...一般我我们准备把一个函数作为参数放在另外一个函数里的时候使用....setTimeout(() => { console.log(this); //打印的this是 obj对象 }) } } obj.aaa() 箭头函数中的
一、箭头函数更直观、简洁 箭头函数为匿名函数 let a = () => {} 有一个参数可省略(),多个的话不能省略(),用 ,号分开 let a = m => {} let b = (m, n...) => {} 有返回值的话,可省略 {} let a = () => 1 // console.log(a()) 值为1 二、为匿名函数,不能作为构造函数,不能用new操作符 let a...= () => 1 let b = new a() Uncaught TypeError: a is not a constructor at :3:9 三、没有自己的...return 1 } console.log(a.prototype); // undefined console.log(b.prototype); // {constructor: ƒ} 五、箭头函数参数不能用...) // 1,2,3 六、箭头函数不能当做Generator函数,不能使用yield关键字 箭头函数的this指向为其上下文的this,一级一级往上找,直到找到 window 当然箭头函数与普通函数的区别还有很多
更简短的函数并且不绑定this。箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。...箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。...elements.map(function(element) { return element.length; }); // 返回数组:[8, 6, 7, 9] // 上面的普通函数可以改写成如下的箭头函数...elements.map((element) => { return element.length; }); // [8, 6, 7, 9] // 当箭头函数只有一个参数时,可以省略参数的圆括号...elements.map(element => { return element.length; }); // [8, 6, 7, 9] // 当箭头函数的函数体只有一个 `return` 语句时
{ this.name = 'little bear', this.age = 18 setTimeout(()=>{ console.log(this ) }) } var a = new...Person() setTimeout里的this代表new Person出来的对象 function Person () { this.name = 'little bear', this.age...= 18 setTimeout(function(){ console.log(this ) }) } var a = new Person() setTimeout里的this代表window...由于箭头函数不改变this,所以setTimeout里面的箭头函数this,不能改变
} } Lucifer.ZnHobbies(); //以下是输出结果 loves Eating loves Sleeping loves Repeat 那么 为什么...hobby的值输出成功,而name不能够输出呢?...所以 解决办法的其中一个就是在ZnHobbies函数中写入 var that = this; 然后将this替换成that,所以输出的结果中,就有了lucifer的名字啦。...还有的一个办法就是将ZnHobbies函数下的map改写成箭头函数: ZnHobbies: function () { this.hobbies.map((hobby)=...为什么箭头函数可以达到这样的效果呢?是因为箭头函数没有它自己的'this'值。它的this值是继承于它的父作用域的。
领取专属 10元无门槛券
手把手带您无忧上云