javascript代码执行过程

 

1.js是浏览器解释执行的脚本语言

2.js是先 预编译 后 执行 (浏览器js解释器解析)

3.代码执行当前执行环境的活动对象中

4.javascript 按模块执行,同时又遵循HTML文档流的解析顺序

5.js没有快作用域的,if-else等条件语句内的变量可以被外界访问

if( true ){
    var num = 'hanyan';
}
console.log( num ); //可以访问到if里的num   hanyan

6.一些情况下,代码会提到作用域最前面

第一种: 用var声明的变量
    var str = 'advance';
第二种:函数声明式
    function advance(){};

例子:

demo();	    //hanyan
function demo(){
	console.log( 'hanyan' );
}

demo();        //demo is not a function
var demo = function(){
	console.log( 'hanyan' );
};

执行编译:

**代码书写**
fn();
var fn = function(){};
var num = 42;

demo();
function demo( data ){

    if(false){
        goo = 1;
    }else{
        var goo = 2;
    }
    
    console.log( data );
};

**预编译过程**
var num,fn; //underfined
function demo( data ){
    
    var goo;     //underfined
    if( false ){
        goo = 1;
    }else{
        goo = 2;
    }
    console.log( data );
};
fn();
fn = function(){};
num = 42;
demo();

goo的搜索过程

1.当前作用域内是否有 var goo的定义。

2.函数形式参数是否有使用 goo名称的。

3.函数自身是否叫做 goo。

4.回溯到上一级作用域,然后开始搜索


7.解析各种浏览器网页中的JS执行顺序(麻蛋麻烦上地址)

[JavaScript 全面解析各种浏览器网页中的JS 执行顺序](http://www.jb51.net/article/17261.htm)


[Javascript代码在页面加载时的执行顺序介绍](http://www.jb51.net/article/36330.htm)

8.改变js在页面的执行顺序

1.利用onload 
2.IE中可以利用defer
3.利用Ajax
posted @ 2016-10-25 19:16  warManHy  阅读(511)  评论(0编辑  收藏  举报