首页 > 其他 > 详细

那些容易忽略的事3-(变量提升和函数提升)

时间:2016-07-08 13:35:00      阅读:167      评论:0      收藏:0      [点我收藏+]

1、变量提升:只要变量在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;

console.log(a); //undefined
var a;

2、函数提升:只要函数在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;

console.log(b); //function b(){}
function b(){};

从上可以看出,变量或函数声明都会别放到当前作用域的顶部,那么问题来了:如果变量和函数重名那么熟轻熟重呢?谁的优先等级更高呢?

var a;
function a(){};
console.log(a); //function a(){}

function b(){};
var b;
console.log(b); //function b(){}

var c=1;
function c(){}
console.log(c); //1

function d(){};
var d=1;
console.log(d); //1

总结:变量申明和函数申明重名时,

不管二者声明的顺序,函数声明会覆盖变量声明,也就是说,此时a的值是声明的函数function a() {}。

注意:如果在变量声明的同时初始化a,或是之后对a进行赋值,此时a的值是变量的值。

也就是说:a===undefined ? a===函数 :a===变量

那些容易忽略的事3-(变量提升和函数提升)

原文:http://www.cnblogs.com/xiexiaobao/p/5652969.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!