我是靠谱客的博主 淡淡过客,最近开发中收集的这篇文章主要介绍JavaScript代码运行分为几个阶段,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.预解析----把所有的函数定义提前,所有的变量声明提前,但是变量的赋值不提前
例如:
var fn1=function(){
   console.log(1111);
}
控制器没有任何反应,因为fn1未定义。

fn1();
var fn1=function(){
   console.log(1111);
}
把fn1()加到前面,控制台输出 fn1 is not a function

var fn1=function(){
   console.log(1111);
}
fn1();
把fn1()加到后面,正常输出 



2.执行---从上到下执行(setTimeout,setInterval,ajax中的回调函数,事件中的函数需要触发执行)


例一
// var i=3;
// var data = [];
// for(i=0;i<3;i++){
//         data[i] = function(){         数组的每一个值都是一个function
//                     console.log(i);
//         }
// }
i是全局变量  

// data[0]();//3
// data[1]();//3
// data[2]();//3
以上结果输出的是3个3
例二
var i=3;
var data = [];
for(i=0;i<3;i++){
            data[i] = (function(k){
                        return function(){
                                    console.log(k);
                        }               
            })(i);i的值传给了k,k的循环是独立的
}
data[0]();//0
data[1]();//1
data[2]();//2

例三
function  JuiceMachine(fruit){
            this.fruit = fruit;

            this.produceJuice = function(){
                        console.log(this.fruit + '果汁');
            }
}

JuiceMachine.produceJuice(); 
// JuiceMachine.brand = '九阳';
// JuiceMachine.open = function(){
//         console.log('open');
// }
// var apple = new JuiceMachine("苹果");
// apple.produceJuice();
// var brand = apple.brand;
// var orange = new JuiceMachine("橘子");
// orange.produceJuice();
//结论:function有双重身份:
//1、对象
//2、构造函数

最后

以上就是淡淡过客为你收集整理的JavaScript代码运行分为几个阶段的全部内容,希望文章能够帮你解决JavaScript代码运行分为几个阶段所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部