![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
你不知道的JavaScript系列
王也道长
这个作者很懒,什么都没留下…
展开
-
IIFE(立即执行函数表达式)
欢迎使用Markdown编辑器写博客立即执行函数表达式形式:var a=2; (function foo() { var a=3; console.log(a); })();或者:var a=2; (function foo() { var a=3; console.log(a); }());上述两种形式都是合法的,全凭个人喜好使用。 IIFE中的函数名不是必须的,原创 2017-07-11 15:03:20 · 545 阅读 · 0 评论 -
你不知道的JavaScript(二)变量提升
变量提升原理看下面的简单例子:console.log(a); var a =2; JavaScript会将上面的声明看成两个声明:var a;和a=2;。第一个定义声明在编译阶段进行,第二个赋值声明会被留在原地等待执行阶段。 第一个代码片段会以如下形式进行处理:var a; console.log(a); a = 2;这个过程就好像变量声明(函数声明也一样)从他们在代码中出现的位置被“移动”到了最原创 2017-07-11 18:27:58 · 356 阅读 · 0 评论 -
你不知道的JavaScript(三)闭包
闭包是什么函数即使在当前词法作用域外执行,也能够记住并访问函数定义所在的词法作用域,这就是闭包。(该定义来自于《你不知道的JavaScript》上卷,推荐阅读英文原版,中文版翻译不太准确) 对词法作用域不了解的可以阅读《你不知道的JavaScript》上卷第二章。 举个例子:function foo() { var a=2; function bar() { co原创 2017-07-12 11:48:58 · 273 阅读 · 0 评论 -
你不知道的JavaScript(四)this(一)
this到底是什么this绑定的是调用位置所在的对象:并不是调用所在的作用域或者调用函数本身。首先来看看调用位置:调用位置就是函数在代码中被调用的位置。要找到函数调用的位置,需要分析调用栈(就是为了到达当前执行位置所调用的所有函数),调用位置就在当前正在执行的函数的前一个调用中。 举个例子:function baz() { //当前调用栈是:baz //因此,调用位置是全局作用域原创 2017-07-13 11:18:07 · 335 阅读 · 0 评论