1,040
社区成员




这是我参加朝闻道知识分享大赛的第55篇文章。
function setname(obj){
obj.name="aini";
}
var person = new Object();
setname(person);
console.log(person.name); //aini
// obj和person内存对应同一个地址
function setname(obj){
obj.name="aini";
obj = new Object();
obj.name = "dilnur";
console.log(obj.name);
}
var person = new Object();
setname(person); //dilnur
console.log(person.name); //aini
回调 :将一个函数对象a 传递给另一个函数对象 b,让后者在适当的时候执行 a。这就是所谓的“回调”
适当的时候:当这个外部函数在一定条件下就会调用参数指定的函数,此函数就是回调函数。如:
function funcA(){
console.log("this is func A");
}
function funcB(func){
func();
}
funcB(funcA); // this is a func A
用回调函数
<body>
<input type="text" id="score">
<input type="button" value="检测" onclick="test()"><br>
<p id="myp"></p>
<script>
var str;
function fun(score,callback){
if(score<0 || score>100) str="分数无效"
else if(score == 0) str="此考生没有参加考试"
else callback();
}
function test(){
var myp=document.getElementById("myp");
var score = document.getElementById("score").value;
fun(score,function(){ //匿名函数
if(score>0 && score<60) str="不及格"
else if(score>=60 && score <70) str="及格"
else if(score>=70 && score<90) str="良好"
else if(score>=90 && score<=100) str="优秀"
});
myp.innerHTML=str;
}
数组排序
function sortArr(arr,fun){
if(!Array.isArray(arr) || !(fun instanceof Function)){
throw new Error("参数类型不准确");
}else{
for(n in arr){
for(m in arr){
if(fun(arr[n],arr[m])){
var tmp=arr[n];
arr[n]=arr[m];
arr[m]=tmp;
}
}
}
}
}
function compare(num1,num2){
return num1>num2;
}
try{
var arr=[45,12,68,95,115,65,32,25,12,78,35];
sortArr(arr,compare);
console.log(arr)
}catch(e){
console.log(e);
}
function func(x){return x*x}
var s = func;
console.log(func(4));
console.log(s(4));
同样可以将函数赋值给对象的属性,此时应该称为方法
var o = {
name:"aini",
say:function(x){
return x*x;
}
}
console.log(o.say(5));
用匿名函数
var o = {}
o.say=function(x){return x*x;}
console.log(o.say(5));
函数作为参数传递
function myFun(someFun,someArg){
return someFun(someArg)
}
function add(num){
return num+=10;
}
var result = myFun(add,20);
console.log(result);