1.

 //回调:回调是异步编程最基本的方法,node.js需要按顺序执行异步逻辑的时候,一般采用后续传递的方式,将后续逻辑封装在回调函数中,作为起始函数的参数。
//具名函数
function learn(something){
console.log(something);
} function we(callback,something){
something+=' is cool';
callback(something); } we(learn,"Nodejs"); //匿名函数
we(function(something){
console.log(something)
},'linshuling') //顺序执行,两个按先后顺序执行,可以得到我们想要的结果。
var c=0;
function printIt(){
console.log(c);
}
function plus(){
c+=1;
} plus();
printIt();// //由于plus函数延迟执行,结果出现差异,可以使用回调函数解决这一问题。
var c=0;
function printIt(){
console.log(c);
}
function plus(){
setTimeout(function(){
c+=1;
},1000); } plus();
printIt();// //回调函数
var c=0;
function printIt(){
console.log(c);
}
function plus(callback){
setTimeout(function(){
c+=1;
callback();
},1000); } plus(printIt);//

2.

 //变量作用域:和调用函数,访问变量的能力有关。
var globalV="This is global var";
function globalF(){
var localV="This is local var"; console.log('Visis global/local var');
console.log(globalV);//This is global var
console.log(localV);//This is local var globalV="This is changed globalV";
console.log(globalV);//This is changed globalV function localF(){
var innerLV="This is inner local var"; console.log("Visis globalV/localV/innerLV var");
console.log(globalV);//This is changed globalV
console.log(localV);//This is local var
console.log(innerLV);//This is inner local var
}
localF(); }
globalF();

3.

 //上下文:在JavaScript中,this通常是指当前函数的拥有者,把拥有者叫做执行上下文。this是JavaScript的一个关键字,代表函数运行时自动生成的一个内部对象。
//
var pet={
words:'...',
speak:function(){
console.log(this.words);//...
console.log(this===pet);//true }
}
pet.speak(); //
function pet(words){
this.words=words;
console.log(this.words);
console.log(this);//指向的是global
console.log(this===global);//true
}
pet('...'); //
function Pet(words){
this.words=words;
this.speak=function(){
console.log(this.words);
console.log(this);
}
} var cat=new Pet('Miao');
cat.speak();

4.

 //call 和 apply
var pet={
words:'...',
speak: function(say){
console.log(say+' '+this.words);
}
}
// pet.speak("Speak"); var dog={
words:"Wang"
}
pet.speak.call(dog,'Speak');//通过call改变执行上下文,把pet.speak的this指向dog,后面是向该方法传递的参数。
//Speak Wang function Pet(words){
this.words=words;
this.speak=function(say){
console.log(this.words);
}
}
function Dog(words){
Pet.call(this,words);
//Pet.apply(this,arguments)
} var dog=new Dog('Wang'); dog.speak();//Wang
04-13 13:18