js笔记一

1.预解释

什么是预解释?

浏览器在执行js代码之前,会找到所有带var 和 function的关键字,提前声明,找完之后,从上到下执行代码。

var 预解释 只声明,未定义

只声明,未定义define,默认值是undefined

console.log(a); // undefined
var a = 5;

没有var , 会报错

console.log(b); // 报错
b = 5;

function 预解释

与var 不同,声明和定义一起完成

预解释只发生在当前作用域,一开始只预解释window作用域下的代码,在执行function时,再次重新预解释function内部的代码。

其中在window作用域下,预解释function(){},内部代码只被看做是字符串,在function执行时,内部代码才生效。

function当中return后面的返回值是不预解释的,提前调用会报错。

 

例:

alert(n);
var n = 9;

function fn1(){
  alert(n);
  n = 7;
  var n = 6;      
}

fn1();

alert(n)

回答,三个alert的值。

 

预解释发生在一个脚本块当中,不同的脚本块中不预解释。

一个函数A执行完毕,内存自动销毁,如果这个A函数内部return了另一个B函数,而在外面又调用了这个B函数,A函数形成的作用域就不会销毁。

 

posted @ 2017-03-20 16:29  涵叔  阅读(82)  评论(0)    收藏  举报