Javascript的陷阱

先看个实例:
[code]
func1();
var a = "hello";
function func1(){
var b = "world";
b = a;
alert(b);
if(false){
var a = "hahaha";
}
}
[/code]
这里有两个问题
1.为什么func1在声明前也可以运行
2.为什么alert(b)会显示未定义“undefined”

要解释这两个问题,只要知道两点就可以。
1.javascript在运行前会有预编译期,会把声明提前(不管这个生命是否真的会运行)
2.局部变量的优先权大于全局变量

所以这个代码的顺序应该是这个样子的
[code]
var a = "hello";
function func1(){ //方法声明放到前面
var b; //局部变量的所有声明都提前,
var a;
b = "world";
b = a;
alert(b);
if(false){
a = "hahaha"; //只有赋值的时候,才在真实的位置
}
}
func1();
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值