概述
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代码运行分为几个阶段所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复