js

静态作用域 | 变量对象

2020-04-30  本文已影响0人  马甲要掉了

静态作用域

函数的作用域在定义时就决定了。

var value = 1;
function foo(){
  console.log(value);
}
function bar(){
  var value = 2;
  foo();
}
bar()  //1

变量对象

进入执行上下文时,首先会处理函数声明,其次会处理变量声明,如果如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性。

console.log(foo);  //foo(){console.log("foo")}

function foo(){
    console.log("foo");
}

var foo = 1;
var foo = 1;
console.log(foo);
function foo(){
  console.log("foo");
};
//这次打印结果就是“1”;

//分解
var foo; // 如果如果变量名称跟已经声明的形式参数或函数相同,则变量声明不会干扰已经存在的这类属性
foo = 1;// 代码执行。PS: 如果没有这行,打印结果是 function foo(){console.log('foo')};
console.log(foo); // 1
function foo(){
  console.log("foo");
};
上一篇 下一篇

猜你喜欢

热点阅读