React进阶之路:

  1. "于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。" (标注: const只是指向地址。对于有引用数据 例如 对象)

  2. 常量a是一个数组,这个数组本身是可写的,但如果将另一个数组赋值给a,就会报错。"

(标注: const1声明常量 不能修改 2;引用常量 指向引用内存;引用内存的值是可以修改的,但是不能对引用地址重新赋值)

  1. 上面的代码在代码块中分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在其所在代码块有"

  2. " for循环的计数器,就很适合使用let命令。

 for(let i = 0; i < 10; i++){
console.log(i) //correct
}
console.log(i) //error 错误 let 适合在代码块中使用 可以改用var

//ReferenceError 以上代码中的计数器i,只在for循环体内有效。 下面的代码如果使用var,最后将输出10"

"上面的代码中,由于typeof运行时x尚未声明,所以会抛出一个ReferenceError。"

"之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”(temporal dead zone,简称TDZ)。 "

  1. "const用来声明常量。一旦声明,其值就不能改变。

    const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: "PI" is read-only  ,const一旦声明常量,就必须立即初始化,不能留到以后赋值
    const foo // SyntaxError: missing = in const declaration

"面的代码中,常量foo储存的是一个地址,指向一个对象。不可变的只是这个地址,即不能把foo指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。"

"const a = []; a.push("Hello"); // 可执行 a.length = 0; // 可执行 a = ["Dave"];"

  1. "果真的想将对象冻结,应该使用Object.freeze方法。 const foo = Object.freeze({}); foo.prop = 123; // 不起作用 上面的代码中,常量foo指向一个冻结的对象,所以添加新属性不起作用。 "

​ "从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 "

"果箭头函数不需要参数或需要多个参数,就使用圆括号代表参数部分。

  1. 箭头函数

    var f = () => {
    5
    }
    // 等同于 var f = function (){ return 5 }; ()中传参数 {}中写代码块 var sum = (num1, num2) => num1 + num2; // 等同于
    var sum = function(num1, num2) {
    return num1 + num2;
    };

"var sum = (num1, num2) => { return num1 + num2; } 由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号。 var getTempItem = id => ({ id: id, name: "Temp" });"

".函数体内的this对象就是定义时所在的对象,而不是使用时所在的对象。"

"一点尤其值得注意。this对象的指向是可变的,但在箭头函数中它是固定的。"

"果是普通函数,执行时this应该指向全局对象,但是箭头函数导致this总是指向函数所在的对象。"

  var handler = {
id: "123456", init: function () {
document.addEventListener("click", event => this.doSomething(event.type), false);
},
doSomething: function (type) { console.log("Handling " + type + " for " + this.id); }
};

"上面的init方法中使用了箭头函数,这导致this总是指向handler对象。否则,回调函数运行时,this.doSomething这一行会报错,因为此时this指向全局对象。"

"this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。正因为它没有this,所以也就不能用作构造函数。"

"以下3个变量在箭头函数中也是不存在的,分别指向外层函数的对应变量:arguments、super和new.target。 "

"头函数“绑定”this,很大程度上解决了这个困扰。"

"const plus1 = a => a + 1; const mult2 = a => a * 2; mult2(plus1(5)) // 12 箭头函数还有一个功能,就是可以很方便地改写λ演算。"

"数绑定运算符是并排的双冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象作为上下文环境(即this对象)绑定到右边的函数上。"

"指某个函数的最后一步是调用另一个函数。"

"面的代码中,情况一是调用函数g之后还有赋值操作,所以不属于尾调用,即使语义完全一样;情况二也属于调用后还有操作,即使写在一行内;情况"

"况三等同于下面的代码。 function f(x){ g(x); return undefined; }"

  1. es5语法 map遍历

     var a = [1,2]
    a.map((index,i)=>{ //index 索引 从0开始,i map中包含的值
    console.log("ssss",i,index) //ssss 0 1 ssss 1 2
    })

React进阶之路书籍笔记的更多相关文章

  1. 通过阅读《React 进阶之路》之学习笔记

    第一章: React 通过引入虚拟DOM.状态.单向数据流等设计理念,形成以组件为核心,用组件搭建UI的开发模式.

  2. 处女作《Web全栈开发进阶之路》出版了!

    书中源码下载地址:https://github.com/qinggee/WebAdvanced 01. 当初决定写博客的原因非常的纯洁:只要每个月写上 4 篇以上博客,月底的绩效奖金就多 500 块. ...

  3. Android研发进阶之路

    前言 移动研发火热不停,越来越多人开始学习android开发.但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容.市面上也多是谈论知识图谱,缺少体系和 ...

  4. Android研发技术的进阶之路

    前言 移动研发火热不停,越来越多人开始学习android开发.但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容.市面上也多是谈论知识图谱,缺少体系和 ...

  5. OpenCV进阶之路:神经网络识别车牌字符

    1. 关于OpenCV进阶之路 前段时间写过一些关于OpenCV基础知识方面的系列文章,主要内容是面向OpenCV初学者,介绍OpenCV中一些常用的函数的接口和调用方法,相关的内容在OpenCV的手 ...

  6. 2017PHP程序员的进阶之路

    2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...

  7. Spark进阶之路-Standalone模式搭建

    Spark进阶之路-Standalone模式搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark的集群的准备环境 1>.master节点信息(s101) 2&g ...

  8. Spark进阶之路-日志服务器的配置

    Spark进阶之路-日志服务器的配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你还在纠结如果配置Spark独立模式(Standalone)集群,可以参考我之前分享的笔记: ...

  9. Scala进阶之路-Scala中的高级类型

    Scala进阶之路-Scala中的高级类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.类型(Type)与类(Class)的区别 在Java里,一直到jdk1.5之前,我们说 ...

随机推荐

  1. HBase 学习之路(十一)—— Spring/Spring Boot + Mybatis + Phoenix 整合

    一.前言 使用Spring+Mybatis操作Phoenix和操作其他的关系型数据库(如Mysql,Oracle)在配置上是基本相同的,下面会分别给出Spring/Spring Boot 整合步骤,完 ...

  2. 你竟然没用 Maven 构建项目?

    一年前,当我和小伙伴小龙一起做一个外包项目的时候,受到了严重的鄙视.我那时候还不知道 Maven,所以搭建项目用的还是最原始的方式,小龙不得已在导入项目的时候花了很长时间去下载项目依赖的开源类库. 出 ...

  3. MethodInterceptor-方法拦截器

    MethodInterceptor 方法拦截器,也就是aop拦截方法 1.使用示例 public interface MethodInterceptor extends Interceptor { O ...

  4. 将GMap封装为Activex供QT使用(工具:VS2017,QT5.12) 更新部署到其它电脑

    由于一开始定的开发平台在QT下,到后面要加入地图控件.qt里本身带有地图qmap(在qt的官方案例中可以找到,用qml做的),但只有固定的几个地图源,要做google或者bing地图,时间和人力不允许 ...

  5. java集合框架中的去重问题

    对于自定义的类来说,必须要重写hashcode和equals方法 hashcode方法的作用是确定元素在数据结构中的位置,当两个元素的hash值一样时,需要用equals方法判断两个元素是否是一样的, ...

  6. 002-pythn基础-循环、编码

    1. 循环 while 条件: 代码块(循环体) else: 当上面的条件为假. 才会执行 执行顺序: 判断条件是否为真. 如果真. 执行循环体. 然后再次判断条件....直到循环条件为假. 程序退出 ...

  7. 网络虚拟化基础协议·Geneve

    [分层] 要实现网络虚拟化,最基础的技术肯定是分层(OverLay & UnderLay). ·UnderLay 中文释义中,老房子漏雨,在房子里面撑一把大雨伞,这把大雨伞就是UnderLay ...

  8. 文档管理器 PDFelement Pro v6.8.4.3921 精简绿色版

    下载地址:点我 PDFelement是PDF全套解决方案专家,专注于PDF的创建.编辑.转换.标注.保护.管理.水印.压缩.签名等功能.Wondershare PDFelement是款国产优秀的专业P ...

  9. kali换源

    在/tec/apt/sources.list加入以下内容 #中科大更新源 deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free ...

  10. 高德网络定位之“移动WiFi识别”

    导读随着时代的发展,近10年来位置产业蓬勃发展,定位能力逐渐从低精度走向高精度,从部分场景走向泛在定位.设备和场景的丰富,使得定位技术和能力也不断的优化更新.定位能力包括GNSS.DR(航迹推算).M ...