ES6深入浅出-2 新版函数:箭头函数 2 视频-1.视频 箭头函数

ES3里面的写法



匿名函数是用不了的 还是需要给他赋值

选中的这一部分叫做匿名函数

等于号叫做赋值

let xxx叫做声明

所以说这个地方是三个语法,首先声明一个匿名函数,然后声明一个xxx变量,最后把这个匿名函数赋值给这个变量xxx

es6箭头函数

箭头函数只能做赋值,不能做声明
这是一个标准的箭头函数

写法2,只有一个参数

如果只有一个函数,可以不用写括号

调用一下做测试

写法3,函数体只有一句话的情况

如果函数体只有一句话,那么是可以不写花括号的。
假设我们的函数体只有return p1+p2这一句话

那么花括号是可以省略掉的。p1+p2就会默认return 过去。

只有一个参数,且只函数体也只有一句话

为什么会有箭头函数

函数里面有this是最难的

箭头函数里面没有this

什么是this?this是call的第一个参数

之所以会出现箭头函数,就是因为this太难用了。

ES3里面怎么用的this

在讲this之前,先讲参数

看下面的代码,声明函数,f,调用函数f,传入abc,那么p1的值就是abc


其实p1就是argument的第一个值
p1就是argument的第二个值

在执行f这个函数之前会构建argument这个对象,里面是f函数的两个参数,

进入this

不用p1也不用p2,直接打印出this。请问这个this是哪里来的呢?

为了更好的说明,把这个函数放在一个对象上


假设有p1和p2两个值

理解python里面的slef

搜索python class 看一下 python的class是怎么用的


传的值1就是p1.那么self是哪里来的呢??

回到js

函数hi第一个参数实际上也是一个this对象,1对应的是p1,2对应的是p2

this是什么呢?this实际上就是.hi前面的东西 ,这里this就是object


实际上第一个参数this对象是隐藏的。

同样的这里的this也是看不见的

总结


this永远是call的第一个参数

this的误用

箭头函数就是为了解决坑人的this

这种写法是没什么问题的,是被js坑的没办法才会这么去写

箭头函数的写法

那么用箭头函数可以解决,箭头函数只有参数,没有this这个对象

为了证明箭头函数没有this的概念

最外头的this就是window这个对象



箭头函数内没有this对象,所以打印出来的就是 最外头的window对象

不用this把自己的name打印出来。

结束

原文地址:https://www.cnblogs.com/wangjunwei/p/11748651.html

时间: 2024-10-08 04:41:28

ES6深入浅出-2 新版函数:箭头函数 2 视频-1.视频 箭头函数的相关文章

ES6深入浅出-1 新版变量声明:let 和 const-2.视频 let和const

以前的var方式声明不好用 a=1回声明一个全局变量, 输出了1 说明a=1确实声明了一个全局变量. 但是你把放在其他的地方,就不是声明全局变量了. 如果外面有个全局变量a 那么函数里面就是给a赋值 有两层函数的时候,直接使用的是局部变量a,也就是fn函数里面的a 如果当前没有a就声明一个全局变量a.如果有a就利用这个a.下面当前就是有a的 这样用的就是最外面的var a 如果外面也没有,这时候才会去声明一个全局变量 所以a=1会声明一个全局变量是错的,只有在没有a这个变量的情况下才会隐式的去声

ES6深入浅出-1 新版变量声明:let 和 const-1.视频 概述

es7语法比较少,只占了一点点 ES 6 新特性一览:https://frankfang.github.io/es-6-tutorials/ 我用了两个月的时间才理解 let   https://zhuanlan.zhihu.com/p/28140450 原文地址:https://www.cnblogs.com/wangjunwei/p/11546269.html

ES6深入浅出-2 新版函数:箭头函数 2 视频-2.视频 箭头函数杂谈

杂谈coffeescript 箭头函数抄的是谁? coffeescript 双箭头的形式 箭头函数简洁的语法 数组内每一个值都平方一下 Map的写法 箭头函数的写法 平方后,每一个值再加1 number变量改成用n,更简化 瘦箭头 瘦箭头其实就是function 判断response里面的对象是否存在的情况 coffescript里面的解决方法,直接用问号解决了. vue中说不要使用箭头函数? 因为vue中依赖this 用到了箭头函数就别用this function()简写的写法,onClick

ES6深入浅出-2 新版函数:4 迭代器与生成器-3.生成器 & for...of

迭代器平时用的很少.但是如果你是写框架的,你会经常用到迭代器. 生成器是专门用来做迭代器的东西 发布器是要产生一个叫做next的对象,如果你要产生这种对象.就可以使用ES6新出的语法. ES6的新语法 星号放在哪里都可以,甚至打空格可以了. 这样写也行 这样写也行 while(true)是一个死循环.这是一个ES6的语法糖 function*是什么 yield是什么鬼?ES6难理解,就是你永远用不到的东西,在这个基础之上又加了一个你永远用不到的东西. 可以移植运行a.next()理论上不会结束.

ES6深入浅出-2 新版函数:4 迭代器与生成器-1.字面量增强

今天的内容 字面量literal 写出来就是它的值 例如字符串hello.这就是自变量. 一个空对象,也是自变量 写出来就是代表它写出来的那个意思就是自变量. 与其相反的就是构造出来的.例如下面的new Object()就不是自变量. 非自变量就是构造出来的量 二进制 以前的二进制是怎么写的呢 以前的二进制基本没有什么用 十进制没有十 八进制没有八 二进制,是以0b开头的 es6新语法,以0b开头的是二进制.0o开头的是八进制 在es5里面0777代表是八进制. 新版的语法知识更好的理解而已.

ES6深入浅出-2 新版函数:4 迭代器与生成器-4.总结

yield的值就是外面调用next得到的值 ES6给的新的语法,如果你给任何一个对象添加一个Symbol.interator的key,同时它的值是一个生成器. 下面选中的就是生成器.生成返回的东西是迭代.那么这个对象就可以迭代,就叫做可迭代对象. 现在JS有三种for语法. 1:叫做for循环 2:遍历一个对象, 3:迭代 结束 原文地址:https://www.cnblogs.com/wangjunwei/p/11816210.html

ES6深入浅出-5 新版对象-1.如何创建对象

对象属性的加强: 可以通过new Object(), Object.create()方法,或者使用字面量标记(初始化标记)初始化对象. 一个对象初始化器,由花括号/大括号 ({}) 包含的一个由零个或多个对象属性名和其关联值组成的一个逗号分隔的列表构成. 上面那句话说的是如何产生一个新的对象. 下面代码.a就是一个空对象, 空对象只有一个属性.那就是_proto_ 使用object.create去创建对象,需要传个参数,这里传null.就真的是一个空对象了,里面什么都没有 Object.crea

ES6深入浅出-5 新版对象-2.属性修饰符

对象语法增强 已经有了个对象的新增语法 还需要一个api来做呢?. 因为有的时候,你需要在旧的对象上添加get.set. 读的时候就走get 写的时候就走set 假设很早之前在项目里写了一个old对象,它的属性都是写好的,现在想给oldObject加get.set.没有办法再去重新定义它 这个api是给已经定好的对象,来不及再去重新定义的对象修改属性, 这样就可以设置oldObject的值为1. 但是set方法里面什么也没做.所以输出oldObject.x的值为undefined 这个api还有

ES6深入浅出-8 新版的类(下集)-1.简单语法

回顾 当你声明一个空的对象obj的时候,会生成一块内存这个内存里面什么都没有,自由__proto__存在401的地址. 也就是Object的protototype在内存中的地址 类 通过函数创建类.这就是构造函数的由来. 用函数来创建某一类的对象,这个函数就叫做构造函数. 公有属性和私有属性 class constructor用来构造自有属性. 公有属性     p1的walk和p2的walk是同一个walk 复杂语法 类必须用new去创建. this就是p1这个对象 extends psers