零碎知识点

小知识:

1、 下载指定版本的包

npm install --save-dev react-router@2.8.1

2、dependenciesdevDependencies的区别

devDependencies:开发环境使用

dependencies:生产环境使用

npm install在安装node模块时,有两种命令参数可以把它们的信息写入package.json文件:

–save
–save-dev

–save 会把依赖包名称添加到package.json文件dependencies键下
–save-dev 则添加到package.json文件devDependencies键下

如果将包下载下来在包的根目录里运行,执行如下命令,默认会安装两种依赖

npm install

3、var 与 let

var arr: any = [];
    for (  var i = 0; i < 2; i++) {
      arr[i] = function() {
        console.log(i);
      };
    }
    arr[0]();
    arr[1]();

结果为:
在这里插入图片描述

let arr: any = [];
    for (  let i = 0; i < 2; i++) {
        arr[i] = function() {
          console.log(i);
        };
      }
    arr[0]();
    arr[1]();

结果为:
在这里插入图片描述
我对这两个结果的产生有点小迷。
我的理解是:var没有块级限制,let有块级限制。function()会产生一个块级作用域,也就是说每个arr[i]都会产生一个块级作用域。
1、在var例子里,输出i时,function里没有i,var又没有块级限制,他就要去全局下找i,这时的i已经经过了for循环,i=2了(也因此跳出循环了),故输出结果为2。(提示:for循环里面逻辑还没开始时,for里的i就完成循环赋值了)
2、在let例子里,输出i时,function里没有i,let有块级限制,他就要去let下的作用域里找i,也就是for循环里。每次在for循环里找,结果就是每次i的赋值。

虽然是这样解释,但感觉还是思路不清晰,有些说不过去。期待指点……

4、解构

从数组/对象里提取值,并按照对应位置赋值

1、数组解构

 const [ a, b, c]: any = [1, 2, 3];
 console.log(a, b, c);

这个要求对应性。
当 解构数量 > 数组 结果是undefinded
当 解构数量 < 数组 结果是所取的的值

 const [ a, b, c, d]: any = [1, 2, 3];
 console.log(a, b, c, d);

在这里插入图片描述

const [ a, b]: any = [1, 2, 3];
 console.log(a, b);

在这里插入图片描述

2、对象解构

	 // 纯解构
   const {name, age}: any = { name: '张三', age: 18 };
   console.log(name, age);

在这里插入图片描述

	// 解构并赋值
   const {name: res1, age: res2}: any = { name: '张三', age: 18 };
   console.log(res1, res2);

在这里插入图片描述
当 解构数量 > 对象属性 结果是undefinded
当 解构数量 < 对象属性 结果是所取的的值

	const {name: res1, age: res2, sex: res3}: any = { name: '张三', age: 18 };
   	console.log(res1, res2, res3);

在这里插入图片描述

5、箭头函数

()=> { }
注意几点:
1、当函数体内只有一句话,且为console.log()时,则{ } 可以省略

const sum = function(a1 , a2) {
	console.log(a1 + a2);
}

const sum =    (a1 , a2) =>  {
	console.log(a1 + a2);
}

const sum =    (a1, a2) => console.log(a1 + a2);

2、当形参只有一个时,( )可以省略

const aaa =      b => { console.log(b) }

但我一般会加上typescript语法,比如

const aaa =      ( b: any ) => { console.log(b) }

3、箭头函数并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。
里面的this指向的是函数定义位置的上下文的this。

6、剩余参数

…args
这里有好的解释
https://www.cnblogs.com/snandy/p/4482463.html

补充一点,剩余函数可以与解构一起使用

	const [ a, ...res]: any = [1, 2, 3];
    console.log(a, res);

在这里插入图片描述

7、简单数据类型、复杂数据类型、内置对象

1、简单数据类型

Number、String、Boolean、null、undefined

2、复杂数据类型

对象、数组

简单数据类型是放在栈上的。复杂数据类型是放在堆上的,并在栈上存放地址
but: js没有栈和堆的概念,通过栈和堆的方式让我们容易理解代码的一些执行方式

3、内置对象

学习内置对象,就是学习内置对象所提供的属性和方法

javaScript的组成:ECMAScript BOM DOM

ECMAScript:有变量,数据类型,操作符,流程控制语句(判断和循环),数组,对象,构造函数,内置对象。

javascript中有三种对象:
自定义对象:这个对象的属性和方法我们自己定义。

内置对象:系统自带的,已经提供好了的对象。

浏览器对象:不属于ECMAScript

Math对象、Date对象、Array(数组)对象、String对象等

4、基本包装类型

在javascript中有三种基本包装类型:String Number Boolean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值