javascript的变量声明提前和函数声明提前

var变量提升

console.log(a)//打印undefined
var a = 123
console.log(a)//未定义该属性
a = 123

这是为什么呢?

  • 使用var关键字声明的变量会在所有的代码执行之前被声明,但不会赋值,所以是undefined
  • 如果声明变量不使用var关键字,则变量不会被声明提前
    所以第一段代码等同于
var a
console.log(a)//a
a = 123

函数的声明提前

fun()//我是fun
fun2()//undefined is not a function
function fun(){
	console.log("我是fun")
}
var fun2 = function(){
	console.log("我是fun2")
}
  • fun2是由var声明的,所以变量提升,var fun2 = undefined
  • function 函数名(){}形式的声明是函数提升式声明,它会在所有代码执行之前就被创建,所以我们可以在函数声明前来调用函数

当变量提升和函数提升同名时

console.log(a)//打印a函数
function a(){
    console.log("我是函数声明提升")
}
var a = "我是变量声明提升"

结论:当变量声明提升和函数声明提升同名时,函数声明提升优先于变量声明提升

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值