美文网首页
JS基础知识

JS基础知识

作者: 小皮胡 | 来源:发表于2020-04-16 16:45 被阅读0次

1、原始值:Boolean,number,string,undefined,null

引用值:arr,object,function,date,RegExp

原始值存在stack(栈内存)中,先进后出,栈内存和栈内存之间的值是互相不影响的,如

var a = 10,var b = a,实际上是拷贝10这个值到b所在的地方

原始值是不可更改的,当数据改变时,会新开辟一个内存存放新的值,把名字改成对应的变量名,之前的内存不销毁,只是与某个变量名不产生联系

引用值存在heap(堆内存)里面,类似散乱的储物格,变量声明和赋值不是同时进行的

当var arr = [1,2]; var arr1 = arr时,实际上是把arr中的地址赋给了arr1,修改arr里的内容(qrr还是指向原来的区域),arr1也跟着变。但是让arr指向新的存储区域则不影响arr1

2、arguments存实参列表,类似数组

当形参和实参一一对应时,有映射,两个改一个另一个跟着变

3、预编译前奏

函数声明整体提升(不管把函数声明写在哪里,都会提升到逻辑最前面)

变量未经声明就赋值即为全局变量,属于window属性

4、函数预编译过程(在函数执行前完成)

a、创建AO对象

b、找形参和变量声明,将变量和形参名作为AO的属性名,值为undefined

c、将实参的值赋给形参

d、找函数声明,值赋给函数体

5、全局预编译

a、创建GO对象

b、找变量声明,值为undefined

c、找函数声明,值赋给函数体

6、setTimeout和setInterval

setTimeout是延迟xx毫秒往异步任务队列里面添加事件,setInterval会每隔xx毫秒往队列里添加事件(不考虑该事件执行所用的时间)比如,setInterval指定每100ms执行一次,每次执行需要5ms,那么第一次执行结束后95毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要105毫秒,那么它结束后,下一次执行就会立即开始。

7、作用域链

一个函数未执行前

函数执行时

当函数执行后它的执行期上下文会被销毁

8、GET和POST两种基本请求方法的区别

相关文章

网友评论

      本文标题:JS基础知识

      本文链接:https://www.haomeiwen.com/subject/hrwtphtx.html