摘要: 闭包定义 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。 看一段最简单的闭包代码: bar()函数可以访问foo()的作用域,通过foo()执行后,返回bar()并当成一个值传递给baz。当baz执行时,bar()依然持有对该作用域的引用,而这个引用就叫做 阅读全文
posted @ 2017-02-26 21:32 书生小龙 阅读(831) 评论(0) 推荐(0) 编辑
摘要: 变量声明提升 Javascript代码一般情况下是由上往下执行的,但是有些情况下不成立。 如果同时有函数声明与变量声明呢? 两个函数声明呢? 另外一个案例在chrome中报错了,估计是浏览器优化过,但是不在判断语句中声明函数是一个好的习惯。 阅读全文
posted @ 2017-02-26 17:17 书生小龙 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 函数作用域 Javascript具有基于函数的作用域,每声明一个函数,都会产生一个对应的作用域。 IIFE 如果需要封装某些变量,但同时不想多出一个函数名与调用函数,可以使用IIFE,立即执行函数。 当函数被括号包起来时,被当成一个函数表达式了,所以可以立即执行,区分函数声明和函数表达式最简单的方法 阅读全文
posted @ 2017-02-26 16:46 书生小龙 阅读(704) 评论(0) 推荐(0) 编辑
摘要: JS引擎 编译与执行 Javascript引擎会在词法分析和代码生成阶段对运行性能进行优化,包含对冗余元素进行优化(例如对语句在不影响结果的情况下进行重新组合)。 对于Javascript来说,大部分情况下编译发生在代码执行前的很短时间内,涉及的概念有引擎、编译器、作用域。 变量声明例如var a 阅读全文
posted @ 2017-02-26 13:24 书生小龙 阅读(295) 评论(0) 推荐(0) 编辑