变量声明提升与函数声明提升

1.var 变量声明提升

使用var声明的变量会提升到作用域最前面 
       

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

等价于
var a;
console.log(a); //undefined
a = 1;
console.log(a); //1

2.函数声明提升

    1.函数的提升会放在作用域的最顶部

console.log(test);
var test = function () {
}

等价于
var test;
console.log(test);
test = function () {
}


    2.有使用var声明的变量在函数提升之后进行变量提升

var a = 1;
function test() {
}

等价于
function test() {
}
var a;
a = 1;


 3.变量名和函数名重复
       

console.log(say);//[Function:say]
say();//say
function say() { console.log('say') };
//变量名与函数重名,后面的变量声明覆盖前面的函数,say不再是一个函数
var say = 'name';
console.log(say);//name
//say();//error!

4.两种函数定义方式提升的区别

//函数声明
console.log(print);//[Function:print]
print();//print
function print(){console.log('print')}


//函数表达式
console.log(foo);//undefined
foo();//不打印error!不能这样调用
var foo=function(){console.log('foo')};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值