基于js的变量提升和函数提升(详解)
2017-09-17 09:00
645 查看
一、变量提升
在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。
上个简历的例子如:
console.log(global); // undefined var global = 'global'; console.log(global); // global function fn () { console.log(a); // undefined var a = 'aaa'; console.log(a); // aaa } fn();
之所以会是以上的打印结果,是由于js的变量提升,实际上上面的代码是按照以下来执行的:
var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(global); // undefined global = 'global'; // 此时才赋值 console.log(global); // 打印出global function fn () { var a; // 变量提升,函数作用域范围内 console.log(a); a = 'aaa'; console.log(a); } fn();
二、函数提升
js中创建函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提升!如:
console.log(f1); // function f1() {} console.log(f2); // undefined function f1() {} var f2 = function() {}
只所以会有以上的打印结果,是由于js中的函数提升导致代码实际上是按照以下来执行的:
function f1() {} // 函数提升,整个代码块提升到文件的最开始<br>console.log(f1); console.log(f2); var f2 = function() {}
结语:基本上就是这样,要熟练掌握的话可以多做些练习,test:
console.log(f1()); console.log(f2); function f1() {console.log('aa')} var f2 = function() {}
(function() { console.log(a); a = 'aaa'; var a = 'bbb'; console.log(a); })();
以上这篇基于js的变量提升和函数提升(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- JS 变量和函数的声明提升
- Js 变量声明提升和函数声明提升
- Js中有关变量声明和函数声明提升的问题
- JS 函数作用域及变量提升那些事!
- js变量提升 和函数提升
- js 变量、函数提升
- js代码执行过程,js预编译,变量声明提升,函数体整体提升
- JS变量名和函数名的提升
- js变量提升与函数提升的详细过程
- js 变量提升和函数提升原理
- js 变量、函数提升
- javascript中的变量提升和函数提升详解
- js的变量提升和函数提升
- js中的变量提升和函数提升
- js函数声明提升与变量提升
- JS中的函数声明提升和变量声明提升
- js 变量 函数名的提升
- JS逻辑题 技术点: 1). 变量提升 2). 函数提升 3). 预处理 4). 调用顺序
- JavaScript中Hoisting详解 (变量提升与函数声明提升)
- js 变量提升和函数提升原理