作用域和闭包 Q: 1.说一下对变量提升的理解 2.说明this几种不同的使用场景 3.创建10个<a>标签,点击时弹出对应序号 4.如何理解作用域 5.实际开发中闭包的应用 (1)、执行上下文 范围:一段<script>或者一个函数 全局:变量定义、函数声明 函数:变量定义、函数声明、this、a ...
分类:
编程语言 时间:
2018-03-12 18:48:23
阅读次数:
186
1. let 用来声明变量,只在命令所在的代码块内有效 2. 在for循环中这个提现的很完美 出来的是5 打印出来的是20 这就更好的说明了块的作用域 3.let不存在变量提升,这个很重要,一旦要用某个变量,一定要先定义再使用,否报错ReferenceError 4.暂时性死区 只要块级作用域内存在 ...
分类:
其他好文 时间:
2018-03-12 18:43:38
阅读次数:
126
作用域与变量提升 作用域 JS中变量的作用域有全局作用域和局部作用域两种,作用域简单来讲就是变量与函数的可访问范围。 全局作用域: 1.最外层函数和最外层函数外面定义的变量。 2.未声明直接赋值的变量,自动声明为全局变量。 3.window对象的内置对象,如window.name,window.lo ...
分类:
其他好文 时间:
2018-03-11 17:25:26
阅读次数:
136
变量建立的过程: 1、先建立argument变量,检查当前 上下文中的参数,建立相应的属性。 2、检查当前上下文的函数声明。 3、检查当前上下文的变量声明,如果已经有声明,则跳过不予赋值。 注意:这是变量建立阶段的步骤。与执行阶段区分开 ...
分类:
其他好文 时间:
2018-03-09 17:59:06
阅读次数:
305
通过var定义的变量,作用域是整个封闭函数,是全域的 。 通过let定义的变量,作用域是在块级或是子块中。 变量提升现象:浏览器在运行代码之前会进行预解析,首先解析函数声明,定义变量,解析完之后再对函数、变量进行运行、赋值等。 - 不论var声明的变量处于当前作用域的第几行,都会提升到作用域的头部。 ...
分类:
其他好文 时间:
2018-03-07 13:23:03
阅读次数:
236
我们先来看一道面试题,大家猜想一下,下面这段代码,打印出来的结果是什么 这里打印出来的结果为什么是 Goodbye Jack, 而不是Hello World呢。 因为JS代码运行分为两个阶段:解析阶段和执行阶段 解析阶段:找到所有的声明,包括函数声明和var声明,并把声明操作提升到它所在执行环境的顶 ...
分类:
编程语言 时间:
2018-03-05 12:52:20
阅读次数:
214
JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。 JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。 x = 5; // 变量 x 设置为 5elem = document.getElementById("demo"); // 查找元素 elem.inn ...
分类:
Web程序 时间:
2018-03-04 21:14:19
阅读次数:
167
变量声明提升 什么是变量提升 function fun(){ console.log(num); var num = 20; } function fun(){ console.log(num); var num = 20; } 相当于 function fun(){ var num; consol ...
分类:
编程语言 时间:
2018-03-03 19:34:04
阅读次数:
186
1、不存在变量提升,即变量不可以在声明之前使用,否者会报错(值为undefined)。 2、ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。 3、不允许重复声明。 4、let和const为js新 ...
分类:
其他好文 时间:
2018-03-03 16:58:06
阅读次数:
122
ECMAScript是JavaScript的标准,JavaScript是ECMAScript的实现。 let: 为JS新增块级作用域。 (1)let命令声明的变量是局部变量,仅在let所在代码块有效; (2)let声明的变量不存在变量提升; (3)块级作用域内let声明的变量,不受外部的影响(暂时性 ...
分类:
其他好文 时间:
2018-03-03 15:30:18
阅读次数:
129