深入理解js的变量提升和函数提升
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了深入理解js的变量提升和函数提升,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1208字,纯文字阅读大概需要2分钟。
内容图文
一、变量提升
在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。上个简历的例子如:
1
2
3
4
5
6
7
8
9
10
|
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的变量提升,实际上上面的代码是按照以下来执行的:
1
2
3
4
5
6
7
8
9
10
11
12
|
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中创建函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提升!如:
1
2
3
4
|
console.log(f1);
// function f1() {}
console.log(f2);
// undefined
function f1() {} var f2 = function () {} |
只所以会有以上的打印结果,是由于js中的函数提升导致代码实际上是按照以下来执行的:
1
2
3
|
function f1() {} // 函数提升,整个代码块提升到文件的最开始<br> console.log(f1); console.log(f2);
var f2 = function () {} |
结语:基本上就是这样,要熟练掌握的话可以多做些练习,test:
1
2
3
4
|
console.log(f1());
console.log(f2);
function f1() {console.log( ‘aa‘ )} var f2 = function () {} |
1
2
3
4
5
6
|
(
function
() {
console.log(a);
a =
‘aaa‘
;
var a = ‘bbb‘ ; console.log(a);
})();
|
原文:http://www.cnblogs.com/kawask/p/6225317.html
内容总结
以上是互联网集市为您收集整理的深入理解js的变量提升和函数提升全部内容,希望文章能够帮你解决深入理解js的变量提升和函数提升所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。