Javascript 声明提前

Javascript 声明提前

作者:欧日鑫 
撰写时间:2020年5月1日
函数定义被提前
在脚本里和函数内部无论在哪个地方定义了函数,其他地方都能够访问。当然,可以举个例子说明。我们定义一个长函数:
> result = function() {
...     var b = a;
...     b();
...     function a() {
.....         console.log("I am a!!");
.....     }
... }
[Function]
> result()
I am a!!
例子说明了这句话:
函数定义语句中函数被显式地”提前”到了脚本或函数地顶部。因此它们在整个脚本和函数内部都是可见的。
上面例子中函数a在变量b后面被定义。但是我们函数体内第一句话就已经吧函数a赋值给b;并在第2句话调用函数b。如果函数的定义没有被提前的话这样来说应该会报错才对。事实上并没有报错。证明了函数定义会被提前到函数的顶部。脚本级别的函数也是如此。这里不冗余了。
变量声明被提前
这里变量声明被提前相对于函数定义被提前又稍微复杂一点。因为变量的规则是 使用var地话只有变量声明提前了–变量初始化代码仍然在原来地位置。。这个其实也很好证明。我们在node里面定义一个函数。
> var variable = "Hello World";
undefined
> function testVariable() {
...     console.log(variable);
...     var variable;
...     console.log(variable);
...     variable = "Happy Coding";
...     console.log(variable);
... }
undefined
然后调用这个函数:
> testVariable()
undefined
undefined
Happy Coding
得到了很梦幻的结果。容小弟来解释一下。
我们在函数外面声明了变量variable,由于函数内部也通过var声明了同名变量。所以外部的全局变量被局部变量覆盖掉了。之所以这里是undefined是由于var声明被提前了。
这里variable也是undefined是由于,我们在1处已经声明了变量。两者直接并没有任何的副作用语句,所以它现在的值依然是undefined。
由于打印之前对变量进行赋值操作。所以现在变量的值是Happy Coding。
这个例子很好证明了:
使用var的话只有变量声明提前了–变量初始化代码仍然在原来的位置。
Happy Coding _

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值