2021-03-03 JS基础补充

今天学习了JavaScript相关知识:

1.
大概理解了一下变量,值,类型:

值:数值
类型:数据类型区别辨明
变量:可变化的量

值通过类型区别,变量可以赋值

2.
重温了let,var,const区别:

let必须先声明后使用,否则报错
var可以先使用后声明,输出为undefined(变量提升)
const与let此特性相同

let声明的变量,会被限制在所在的作用域内
var声明的变量,是全局变量
const与let此特性相同

let不可声明同名变量,否则报错
var可声明同名变量,后者覆盖前者
const同let

const不可做修改,所以const声明同时必须初始化,否则报错

特别 :const声明的变量虽然不可改变,但声明的对象可以改变属性内容。原因是const锁定的是该变量的地址,而非该变量本身。const声明的对象不可改变所指的对象,但是可以改变所指对象内容。

3.
了解了Js的基础类型和引用类型:

基础类型:undefined、Null、String、Number、Boolean
引用类型:Object、Regexp、Array、Data、Function

引用类型的含义:变量所指的都是真实数据的引用,操作的是引用。但是修改数值的时候,操作的则是实际的对象。

4.
undefined和Null的区别:

undefined是指该变量被声明但未初始化,此时该变量为undefined类型且值为undefined。
undefined类型仅有一个值,即为undefined。

Null则代表该变量未被声明,既无此对象。

5.
Js中this指向

this的设计目的是为了指向该对象所在的环境

绑定默认情况:
严格模式:不将window作为this默认绑定,this指向undefined
非严格模式:默认指向全局变量

隐式绑定情况:
当通过对象属性执行函数时,会将this绑定到对象身上
函数传参也是一种隐式赋值,此时在回调函数中会丢失this绑定。

显式绑定情况:
通过 call apply bind函数绑定

function foo() {
  console.log(this.name);
}

var obj = {
  name: 'Heternally',
}

var obj1 = {
  name: 'Heternally1'
}

var name = 'zl';

foo.call(obj); // Heternally  调用call方法后强行将foo函数的this指向来obj对象上

foo.call(obj).call(obj1); // Heternally  多次调用call方法,以第一次为准

foo.call(obj1).call(obj); // Heternally1

foo.call();// zl 没有传入指定对象,所以this默认指向全局对象

该代码选自https://lucifer.ren/fe-interview/#/topics/js/this

new绑定情况:
可理解为通过构造函数创建一个新对象时,会默认将this指向该对象所创造的作用域。
用new绑定时,需要判断函数返回的值是否为一个对象,如果是对象,那么this会绑定到返回的对象上。
(个人理解,有错的话会回来进行修改)

ES6的箭头函数绑定情况:
当使用箭头函数时,以上4种情况会失灵
箭头函数的this指向即为外层作用域

绑定优先级:new > 显式 > 隐式 > 默认

6.
堆内存和栈内存的基础了解

函数的运行顺序会存放在栈中,然后以先入后出的机制进行函数的运行。
因为存在结构,所以运行效率很高。

数据的存放都随意存放在堆中,没有规则。

7.
Js的原型链机制初了解

所有Js实例在创建后
let exam = new Object();
exam.__ proto __ == window.Object.prototype

原型的作用是,可以让创建的实例拥有一些自带属性,就好像一些富二代和官二代出生就拥有一定的资本和财产一样(雾)。省去不少代码。

8.
Js的函数柯里化
curry函数,高阶函数的一个用法

通过嵌套,将一个本接受多参数的函数简化为一个只需要接受一个参数的函数(最初函数的第一个参数)。并且返回接受余下的参数而且返回结果的新函数的技术。

function sum(x,y)
{	
	return x+y;
}//原函数

function sum1(x)
{
	return function(y)
	{
		return x+y;
}
}//curry后的函数
sum(1,2);//原
sum1(1)(2);//改后
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值