码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-07-08 13:36:23      阅读:131      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!