1.使用var,let,const进行变量声明
2.函数式声明以上两种声明变量的区别在于:
涉及变量需提前时,第一种只是变量提前,赋值不提前。而第二种函数式声明的话不仅变量提前,赋值也会提前。举个例子:看下图,输出则是function a () {console.log('2')},function a () {console.log('1')},因为d是局部变量,所以会报错。
2.函数式声明以上两种声明变量的区别在于:
涉及变量需提前时,第一种只是变量提前,赋值不提前。而第二种函数式声明的话不仅变量提前,赋值也会提前。举个例子:看下图,输出则是function a () {console.log('2')},function a () {console.log('1')},因为d是局部变量,所以会报错。
!function () {
alert(a)
a()
var a = function () {
console.log('1')
}
function a () {console.log('2')}
alert(a)
var d = c = a
}()
alert(d)
alert(c)其中
alert(a)
a()
var a = function () {
console.log('1')
}
function a () {console.log('2')}
alert(a)
就是考的两种声明方式的提前,d,c只是附加的作用域问题的。不过还是挺感谢你一起来探讨的,3q
另外,你的这个:function的方式属于构造时赋值,var属于执行时赋值,就很好的解释了声明提前和声明+赋值提前了。