1、在中javascript,var定义变量实际是有作用域的。假设早函数体中声明则在函数体外不可以使用(除非用闭包实现)
function f() {
var x=1;
x=x+1;
}
x=x+2;
2、如果两个函数使用了相同的变量名,只要在函数内部,就不冲突。
function f() {
var x=1;
x=x+1;
}
function f2(){
var x='A';
x=x+1;
}
3、内部函数可以访问外部函数成员,反之则不行。
function f() {
let x = 1;
function f2(){
let y = x + 1;
}
let z = y + 1;
}
4、假设在javascript中函数查找变量从自身函数开始~,由"内"到"外"查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数变量。
function f2() {
var x = 'A';
console.log('inner'+x);
}
console.log('outer'+x);
f2();
5、javascript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有在函数作用范围内找到,就会向外查找,如果在全局作用域没有找到,报错Refrence
var x = 'xxx';
window.alert(x);
var old_alert = window.alert;
window.alert = function(){
};
//发现alert()失效了
window.alert(123);
//恢复
window.alert = old_alert;
window.alert(1456);