全局上下文的准备工作:
全局环境下 javascript真正运行语句之前, 解释器会做一些准备工作:
- 对变量的声明 (而变量的赋值, 是真正运行到那一行的时候才进行的.)
- 对全局变量 this 的赋值
- 对函数声明赋值, 对函数表达式声明
如何理解这三种情况呢?
- 对变量的声明:
1 | console.log(a); // undefined |
准备工作是提前声明了变量 a, 和下面写法意思一样
1 | var a; |
在学习 javascript 的 this之前, 我们需要先明确一个重要知识:
在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。
简单记忆是,谁调用的函数,this就指向谁.
在 javascript 中, this的取值,一般分为下面几种情况。
1 | function Foo(){ |
1 | function Foo(){ |
每次写快速排序,写过一次搞明白了,过一段时间写又忘记了。这次采用牛郎织女的故事,加深记忆。
牛郎织女从两边往中间走见面,牛郎在左边,织女在右边. 他们选取路上最左的一个数字作为交流信号。
织女先向左走,大于等于就走,小于就停。牛郎向右走,小于等于就走,大于就停,然后两人打电话交换脚下的数据。
接着走,接着打电话交换数据,直到两人相遇。相遇后,把两人脚下的数据和心中的数字做交换。
至此,相遇点左边都是比心中数字小,相遇点右边都是比心中数字大。
想在公网上实现视频通信,需要下面3个核心元素:
看个小故事:
1 | *writes down "1+1+1+1+1+1+1+1 =" on a sheet of paper* |
1 | type LRUCache struct { |