js基础复习0618六

js基础参考:JS基础知识复习(持续更新)_学前端的小王子的博客-CSDN博客_js复习 

一、js数据类型

介绍:不同的数据占用的存储空间不同,为了充分利用存储空间对数据进行了分类。

分类:基本数据类型和引用数据类型

基本数据类型:

类型说明
number数字性
string字符串
boolean布尔值
null空对象
undefined已经声明但没有赋值的变量

引用数据类型(数组,字符串对象,日期,Math,函数,对象)

类型说明
Array数组
Date日期
Math数学
String字符串
Object对象
function函数

区别:数据存储位置不同。

基本数据类型存放在栈中,复杂数据类型(即引用数据类型)存放在堆中

二、栈和堆(堆和栈的概念存在于数据结构中和操作系统内存中。)

栈:先进后出,栈内存由编译器自动分配释放。

堆:优先队列,先进先出,堆内存由程序员分配释放,若程序员不释放,程序结束时可能由垃圾回收机制回收。

三、判断数据类型的方法

方法说明示例
typeof 能够快速区分基本数据类型 + function,不能将Object、Array和Null区分,都返回objectconsole.log(typeof 2);
instanceof能够区分Array、Object和Function,不能判断基本数据类型console.log(2 instanceof Number); 

四、数据类型转换

转成数字型

方法说明
parseInt(string)   将string类型转换为整数数值型
parseFloat(string)  将string类型转成浮点数值型
Number()  将string类型转成数值型
js隐式转换(- * /)  利用算术运算隐式转换成数值型

示例:

转成字符串

方法说明
tostring()转成字符串
String(变量)强制转换

加号拼接字符串

通过+号拼接字符串

示例:

 

转成布尔值

五、js原型和原型链

参考:详解JS原型与原型链_小杰学前端的博客-CSDN博客_js原型和原型链 

介绍:

JavaScript规定,每一个构造函数都有一个prototype属性, 指向另一个对象。注意这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有。
我们可以把那些不变的方法,直接定义在prototype对象上,这样所有对象的实例就可以共享这些方法。
所以在上例中我们就可以把公共函数放在原型对象的里面,这样就不会造成内存浪费
对象都会有一个属性__ proto__指向构造函数的 prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有_ proto_ 原型的存在。
在对象身上系统自己添加了一个__proto__指向我们构造函数的原型对象,所以__proto__对象原型和原型对象prototype是等价的。

六、this指向

情况说明
1.单独使用指向全局即window
2.对象方法中指向调用该方法的对象
3.函数指向函数的所属者

 七、call()  apply()  bind()的异同点

相同点:改变this指向

不同点:它们的区别主要是在于方法的实现形式和参数传递上的不同。 

方法说明
函数.call(对象,arg1,arg2....)参数列表,立即执行
函数.apply(对象,[arg1,arg2,...])参数接收的是数组
函数.bind(对象,arg1,arg2,....)bind返回的是一个函数体,并不会直接执行函数

示例:

function show(sex){
	console.log("姓名为"+this.yourname+",性别为"+sex);
 
}
var person={
	yourname:"张三",
	age:14
};
show.call(person,"男");//姓名为张三,性别为男
show.apply(person,['女']);//姓名为张三,性别为女
show.bind(person,"未知")();//姓名为张三,性别为未知

八、==和===的区别

类型说明
==值相同,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;
===值和类型都相同,当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较;

 九、js强制转换和隐式转换

强制转换:parseInt()   parseFloat()  toString()

隐式转换:==    ===

十、map和foreach的区别 

map会返回一个新数组

foreach没有返回值

 十一、内存泄漏

介绍: 程序中已动态分配的堆内存因为某种原因未释放或无法释放引发的各种问题

危害:变慢,延迟,崩溃

原因:

1、全局变量

2、定时器没有清除

3、DOM清空时,还存在应用

4、闭包

十二、垃圾回收机制

 目的:防止内存泄漏

介绍:不停歇的寻找这些不再使用的变量,并且释放掉它所指向的内存

方式:标记清除,引用计数

标记清除:大部分浏览器使用这种垃圾回收,当变量进入执行环境(声明变量)的时候,垃圾回收器将对该变量进行标记,当该变量离开环境的时候,将其再度标记,随之进行删除

引用计数:这种方式常常会引起内存泄漏,主要在低版本浏览器中,它的机制就是跟踪某一个值的引用次数,当声明一个变量并且将一个引用类型赋值给变量得时候引用次数加1,当这个变量指向其他一个时引用次数减1,当为0时出发回收机制进行回收。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值