JavaScript之函数 函数的定义方式 函数声明 函数表达式 new Function 函数声明 函数表达式 函数声明必须要有名字 函数声明会函数提升, 在预解析就已经创建,声明前后都可以调用 函数表达式类似于变量赋值 函数表达式可以没有名字,匿名函数 函数表达式没有变量提升, 在执行阶段创建, ...
分类:
编程语言 时间:
2019-09-11 15:44:00
阅读次数:
85
1、变量提升,函数提升 在JS中,声明变量之后,不是立即赋值,而是把所有用到的变量全部声明之后,再到变量的定义的地方进行赋值,变量的声明的过程就是变量的提升。 函数的提升和变量的提升类似,都是提升到作用域的最开始的位置,只不过变量的提升是分两步的,第一步是变量声明的提升,第二步是变量的赋值。而函数的 ...
分类:
编程语言 时间:
2019-09-08 21:51:56
阅读次数:
94
一、作用域分类 (作用域范围内定义的变量,整个作用域都可以访问) 1. 全局作用域 使用var声明(或者不严格模式下没有声明)且在函数外定义的变量,其作用域范围是全局的,称其为全局作用域。 2. 函数作用域 使用var声明且在函数内部定义的变量,其作用域范围是整个函数,称其为函数作用域。 3. 块作 ...
分类:
其他好文 时间:
2019-09-07 11:08:02
阅读次数:
91
1变量提升: 就是说,以var声明的变量,它的声明会被提升到当前作用域的顶端(注意是变量声明提升,变量的赋值没有提升) 举一个例子: 上面代码相当于: 2 那么如果用let和const声明的变量是否会提升?let和const是块级作用域 用以下例子进行测试: <script> console.log ...
分类:
Web程序 时间:
2019-09-01 10:23:43
阅读次数:
103
今天带大家了解的是比较有趣的几个变量声明关键字var,let,const。 我们在最初接触JS的时候,变量是我们重要的一个组成部分,在使用时规定必须要先进行声明,否则网页将会报错: console.log(b); //b is not defined ,表示我们并没有对变量进行声明,却要调用变量b, ...
分类:
其他好文 时间:
2019-08-31 16:59:55
阅读次数:
77
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已经发布很久了,之前只会用var定义变量,学习了let和const后,又学到了一些作用域、JavaScript编译和深拷贝浅拷贝的知识。这章主要来说说这三个定义量的方法: 1.var 在没学习es6时,会经常用到var,var用来定义一个变量,变量数据类型可以是基础数据类型,也可以是引用数据类 ...
分类:
其他好文 时间:
2019-08-22 18:37:32
阅读次数:
59
1. let 和 counts 2. 模板字符串:反引号(')标识 3.箭头函数 4. 对象的单体模式: 5. 面向对象 ...
分类:
其他好文 时间:
2019-08-21 13:36:29
阅读次数:
88