函数声明,函数表达式,形参和变量赋值引发的一些事

1、在JavaScript中,函数会首先被提升,然后才是变量的提升;
2、在编译阶段,后面的变量遇到前面有冲突的变量声明或者函数声明,都会忽略;
3、根据js在执行前所做的准备工作(执行上下文那节讲过):
(函数将声明并赋值,变量和 函数表达式只声明,值为undefined,this对象指向window对象)

4、填充变量对象的顺序是:函数的形参 --> 函数声明 --> 变量声明
5、当函数声明 ---如果函数名与前面的变量对象相同,则该函数将完全替换这个变量属性
6、 变量声明,当变量声明遇到函数中已经有同名的时候,不会影响已经存在的属性,如下例题:

分析:那么在函数内部和全局环境中,是谁覆盖谁?第一个例子中,声明与变量声明是先后进行,但是变量只是声明未赋值,因而不会覆盖函数对象,而第二例子中是函数声明先进行,调用函数函数时再有变量的声明。局部变量先在局部作用域中寻找,后在全局变量中找;(作用域问题)
!!!注意: 变量不带var 来声明的,不会提升;
例如:
最后一个例子来作总结:

猜你喜欢

转载自blog.csdn.net/cly1223_abby/article/details/80528243