全局作用域:var 块级作用域:let const 一、全局作用域 1.最外层函数和在最外层函数外面定义的变量拥有全局作用域 2.所有末定义直接赋值的变量自动声明为拥有全局作用域 二、局部作用域 函数内部声明的变量,属于局部变量,只有局部作用域,外部无法访问。 可能导致两个问题: (1)内层变量可能 ...
分类:
其他好文 时间:
2019-09-12 21:52:17
阅读次数:
76
1.什么是ES6? ES的全称是ECMAScript,ES6就是ES2016之后的一个泛称,是由ECMA国际标准化组织制定的一项脚本语言的标准化规范。 2.ES6新增语法 1. let ES6中新增的用于声明变量的关键字 特点: 1.let声明的变量具有块级作用域的特点,只在所处的块级作用域有效 i ...
分类:
其他好文 时间:
2019-09-07 22:07:49
阅读次数:
83
// 六道题 /** * 因为JS没有块级作用域,if里面的foo又是以var形式声明的,所以会被提升上去, * 被赋值为undefined,之后undefined代表false,所以会进入if语句块, * foo被赋值为10,所以下面会打印输出10 */ var foo = 1; function ...
分类:
其他好文 时间:
2019-09-07 10:40:01
阅读次数:
77
1变量提升: 就是说,以var声明的变量,它的声明会被提升到当前作用域的顶端(注意是变量声明提升,变量的赋值没有提升) 举一个例子: 上面代码相当于: 2 那么如果用let和const声明的变量是否会提升?let和const是块级作用域 用以下例子进行测试: <script> console.log ...
分类:
Web程序 时间:
2019-09-01 10:23:43
阅读次数:
103
1.ES6可以用let定义块级作用域变量,只在{ }内有效 2.let没有变量提升 用let声明的变量,不存在变量提升。而且要求必须 等let声明语句执行完之后,变量才能使用,不然会报Uncaught ReferenceError错误。 3.暂时性死区 在代码块内,使用let命令声明变量之前,该变量 ...
分类:
Web程序 时间:
2019-08-30 13:49:56
阅读次数:
96
ES5中只有全局作用域和函数作用域,没有块级作用域。在ES6中多了一个块级作用域, {}在ES6中用来形成块级作用域,即代码块。 let命令声明的变量只在let代码块内有效,声明之后可以改变变量的值。 let不会发生变量提升的现象,需要在定义后使用,否则报错。 下例中,由于var命令的变量提升机制, ...
分类:
其他好文 时间:
2019-08-27 19:34:58
阅读次数:
61
一、变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。上个简历的例子如: 之所以会是以上的打印结果,是由于js的变量提升,实际上上面的代码是按照以下来执行的: 二、函数提升 ...
分类:
Web程序 时间:
2019-08-27 00:46:05
阅读次数:
89
ES6 主要是为了解决 ES5 的先天不足,在原先ES5的基础上新增了许多内容,本篇文章将列举出ES6中新增的10大特性。 一、 let 和 const 与var不同,let和const都是用于命名局部变量,都是块级作用域。具体可参考阮一峰老师的文章:http://es6.ruanyifeng.co ...
分类:
其他好文 时间:
2019-08-22 01:04:38
阅读次数:
444
1.var声明的变量默认挂载在window对象下,而let和const声明的变量会自动创建块级作用域下 ...
分类:
其他好文 时间:
2019-08-20 20:25:18
阅读次数:
89
11.4 JavaScript 11.41 变量 1、声明变量的语法 2、变量名命名规范 3、ES6中let ES6之前js没有块级作用域,ES6新增了let命令,用于声明变量(声明的变量属于块级作用域),流程控制语句的{}就是块级作用域。其用法类似于var,但是所声明的变量只在let命令所在的代码 ...
分类:
编程语言 时间:
2019-08-16 23:16:26
阅读次数:
175