坑一:
// 反例myname = "global"; // 全局变量function func() { alert(myname); // "undefined" var myname = "local"; alert(myname); // "local"}func(); 理解:JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析);对于JavaScript,只要你的变变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候;上面的代码片段执行的行为可能就像下面这样:
myname = "global"; // global variablefunction func() { var myname; // 等同于 -> var myname = undefined; alert(myname); // "undefined" myname = "local"; alert(myname); // "local"}func();
时间: 2024-10-26 13:58:21