关于JavaScript作用域问题:
先明确JavaScript查找变量是由内向外查找的(先在函数内部查找,如果没有查找到变量,再往上一级进行查找,最后查找的到全局变量)。
同时JavaScript遵循一个规则,内部可以访问外部变量,而外部不能访问内部变量。
例如:
var color = "red"; function getcolor() { var color = "black"; return color; } console.log(getcolor());
返回的是"black",并不是"red"。
同时如果在内部同时定义局部和全部变量,会根据定义的先后顺序产生不同的结果:
var color = "red"; function getcolor() { color = "blue"; var color = "black"; return color; } console.log(getcolor());
会输出"black",对全局变量不会有任何改变
如果调换定义语句就会改变
var color = "red"; function getcolor() { var color = "black"; color = "blue"; return color; } console.log(getcolor()); console.log(color);
输出为"blue".