关于变量要提前声明,作为前端程序员我们都知道要这么做。可是为什么要这么做呢? 今天我去面试,被一个面试官问到了这个问题,当时就懵逼了。所以我就研究了一下为什么会变量提升。 研究完才发现,之前有看过这样的文章,可是没有真正弄懂。所以写下了这篇博客。 首先要了解两个名词。 JS作用域和词法分析。 如何了 ...
分类:
其他好文 时间:
2018-06-13 23:41:45
阅读次数:
286
1.对变量提升的理解 2.说明 this 几种不同的使用场景 3.创建10个 <a>标签,点击的时候弹出来对应的序号 4.如何理解作用域 5.实际开发中闭包的应用 一、执行上下文 1.范围:一段<script>或者一个函数 (都会生成一个执行上下文) 2.全局:变量定义、函数声明 (一段<scrip ...
分类:
Web程序 时间:
2018-05-04 20:19:58
阅读次数:
191
这是我 JavaScript 学习过程中遇到的一些容易混淆的地方,趁着有时间,做了一个整理。 变量提升 变量与函数名提升优先级 js 作用域内有变量,这个很好理解,但有一些细节需要注意。 当变量名与函数名同名,且都提升上去了,那最终结果是哪个声明起作用呢? 有两个知识点: 1. var foo;并不 ...
分类:
Web程序 时间:
2018-05-02 02:39:21
阅读次数:
197
前言 通过本文,你大概明白作用域,作用域链是什么,毕竟这也算JS中的基本概念。 一.作用域(scope) 什么是作用域,你可以理解为你所声明变量的可用范围,我在某个范围内申明了一个变量,且这个变量能在这个范围内可用, 那么我可以说此范围就是该变量的作用域。 作用域一般分为局部作用域和全局作用域。 怎 ...
分类:
Web程序 时间:
2018-04-12 13:33:57
阅读次数:
243
以前总是搞不清楚js里面的作用域、块级作用域、预解析,做题总做错,今天彻底搞明白了,来记录梳理一下~ 块级作用域 在其他语言中,任何一对花括号中的语句都属于一个块儿,在这之中定义的所有变量在代码块外都是不可见的。Js中没有块级作用域 一个感觉在面试中会经常遇到的问题 第一反应是i是9,但是错了,i是 ...
分类:
Web程序 时间:
2018-03-19 16:44:25
阅读次数:
226
众所周知,在ES6之前,JavaScript是没有块级作用域的,如下图所示: 学过其他语言的同学肯定有点诧异,为什么会这样呢?因为js还是不同于其他语言的,在ES5中,只有全局作用域和函数作用域,并没有块作用域,当然我们可以实现块作用域的功能。看下面代码: 在这段段代码中,我们使用立即执行函数(II ...
分类:
Web程序 时间:
2018-02-23 13:23:50
阅读次数:
216
因为在函数中,a 的前面没有var ,所以 变量a 是全局作用域,所以在函数的任意部分都能够访问到变量a ,所以打印出来的是 数字 3 依次打印出来的是 undefined 2 1 ,考察的是作用域的问题 ...
分类:
Web程序 时间:
2018-01-14 11:08:15
阅读次数:
204
深入理解JS this 阮一峰博客链接http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使 ...
分类:
Web程序 时间:
2017-11-16 20:52:28
阅读次数:
232