《你不知道的js》----上卷笔记

2018-04-27  本文已影响0人  _小小苏_

1. LHS和RHS查询。
他们都是由引擎进行的,取决于变量出现在赋值操作的左侧还是右侧。
如果查找的目的是对变量进行赋值,那么就会使用LHS查询; 如果目的是获取变量的值,就会使用RHS查询

2. 变量提升,函数优先。
1)首先定义声明是由引擎在编译阶段进行的;赋值会被停留在原地等待执行阶段。
2)函数声明会被提升,但是函数表达式却不会被提升(包括具名的函数表达式)。

例1:
foo();     //TypeError      foo为undefined,还不能被当做函数执行
bar();    //ReferenceError
var foo = function bar(){
  //....
};
其相当于:
var foo;
foo();
bar();
foo = function(){
  var bar = self;
  //...
}
例2:
foo();   //3
function foo(){   console.log(1);  };  
var foo = function(){  console.log(2);  };  
function foo(){   console.log(3);  }; 
foo();   //2
上一篇 下一篇

猜你喜欢

热点阅读