异步操作

背景JavaScript 采用的是单线程。也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。多线程需要共享资源、且有可能修改彼此的运行结果,对于一种网页脚本语言来说,这就太复杂了。所以,为了避免复杂性,JavaScript 一开始就是单线程,这已经成了这门语言的核心特征,将来也不会改变。好处实现起来比较简单,执行环境相对单纯坏处只要有一个任务耗时很长,后面的任务都

- 阅读全文 -

内存图/垃圾回收/深浅拷贝

今天深入了解this的时候,涉及到了基本类型和对象在内存中不同的引用方式,所以巩固一下内存的相关知识。内存图JS引擎拿到分配的内存之后会分为两个大区代码区和数据区,比如var a = 1其中的a就会放到代码区,1会被放到数据区,至于他们是怎么对应起来的,这是JS引擎负责的。数据区分为两部分Stack栈内存和Heap堆内存,JS中的基本数据类型(Number String Null Undefine

- 阅读全文 -

|| 与 && 运算符

&&:找false,找到有人的值是false就不找了,返回这个人;找不到就返回最后一个人。五个值为false的人(0,NaN,null,undifined,'')||:找true,找到有人的值是true就不找了,返回找个人;找不到就返回最后一个人。

- 阅读全文 -

JS中的函数(面试重点)

函数的5种声明具名函数 function f(x,y){ return x+y } f.name // 'f' console.log(f) // 这里是可以打印出f这个函数的,对比一下第3种。这就是JS的不一致匿名函数 var f f = function(x,y){ return x+y } f.name // 'f'具名函数赋值 var f f = func

- 阅读全文 -

JS的标准库

  JS内存里面有两种东西,一个是栈内存(Stack),还有一个是堆内存(Heap)。栈内存里面有个特别重要的变量global(在浏览器里面它叫做window)。window是一个对象,于是它就有一块内存,内存里面以哈希表的方式存储着两种库(标准库和非标准库)。标准库里面有很多函数。Object  对于Object来说,如果给它一个数字,它就会把它包装成一个Number对象;如果给它一个字符串,它

- 阅读全文 -