JavaScript那些事儿-容易迷失方向的this

在上一篇博文《JavaScript那些事儿-高大不好上的闭包》撸主对闭包做了概述,当然闭包这个东西理解是有一个过程的,也许在一个瞬间,某个转身突然就悟到了,有种“只可意会不可言传”的感觉;撸主天生愚钝,也是在这个理解的路上,不敢说自己写得有多好,但是将自己的理解说出来了,有说得不好的请博友踊跃指正!撸主洗耳恭听。

在我们开发实际项目上this的作用极大,它也更灵活的增加编程的乐趣,撸主在此对使用this的场景一一概述,其实在最开始接触JavaScript时,一直感觉它挺神秘,只到通过大大小小的项目总结出this其实并不是传说中的那么神秘,本文将一步一步解开它神秘的面纱(很高级的说)。

More...

JavaScript那些事儿-高大不好上的闭包

在上一篇博文《JavaScript那些事儿-无人知晓的预解释》对预解释作了概述,在写这篇博文前打算写几个经典案例,考虑到那些案例综合性比较强,也就循序渐进的有了这篇博文,这样对于学习和深入JavaScript也更加容易入手。

一同事去面试,面试官问了一道题:你写一个闭包我看下?于是同事火速写出如下代码:

1
2
3
4
function fn(){
alert('Hello JavaScript Closure!!!');//妈蛋,E文本来就不好,找翻译才把闭包单词写出来
}
fn();

然后面试官摇摇头说道:“这怎么能叫闭包呢?”,最终两人争执不下,同事果断走人,面试官什么玩意儿?(本故事纯属虚构,如有雷同纯属巧合)

More...

JavaScript那些事儿-不被知晓的预解释

一.带var关键字预解释

让我们先看下这段代码执行的结果:

1
2
alert(n);//弹出undefined
var n = 10;

弹出的结果是undefined,为何不是10?让我们再看下面这段代码执行的结果:

1
2
alert(n);
n = 10;

运行报如下错误:预解释 n is not defined,为何这次会报错,原因是代码在运行的时候,没有声明这个变量n;通过这两段代码的比较,我们发现带var关键字和不带var关键字声明的变量是有区别的,带var声明的变量在代码执行之前,似乎浏览器已经给了它们一个初始值undefined,因此我们将代码执行前,浏览器引擎自动扫描带var关键字和带function关键字(后面会提到)声明的变量和定义的函数的这个过程称为预解释。

More...