一、函數(shù)
1.聲明還是表達(dá)式
<script>
//1、函數(shù)聲明
function a(num1,num2){
return num1 + num2;
}
// 2、函數(shù)表達(dá)式
var b = function (num1,num2){
return num1 + num2;
};
// 先定義,再使用
</script>
2.函數(shù)就是值
<script>
// function sayHi(){
// console.log("Hi!");
// }
// sayHi();
// var sayHi2 = sayHi;
// sayHi2();
// sort() 是將對(duì)象轉(zhuǎn)化成字符串然后進(jìn)行比較
var num = [1,5,8,4,7,10,2,6];
num.sort(function(first,second){
return first - second;
});
console.log(num);
num.sort();
console.log(num);
</script>
數(shù)組排序的封裝函數(shù)
GLOBAL.namespace("Array");
GLOBAL.Array.arraySort=function(arr){
arr.sort(function(a,b){
return a-b;
})
};
3.參數(shù)
arguments 是一個(gè)類似于數(shù)組的對(duì)象,其本質(zhì)并不是對(duì)象。
arguments 對(duì)象的長度是由傳入的參數(shù)個(gè)數(shù)決定的,不是由定義函數(shù)時(shí)的命名參數(shù)的個(gè)數(shù)決定的。
<script>
// function aa(value){
// return value;
// }
// aa = function(){
// return arguments[0];
// };
// console.log(aa("Hi!"));
// console.log(aa("Hi!",25));
// console.log(aa.length);
function sum(){
var result = 0,
i = 0,
len = arguments.length;
while(i<len){
result += arguments[i];
i++;
}
return result;
}
console.log(sum(1,2)); // 3
console.log(sum(3,4,5,6)); //18
console.log(sum(50)); // 50
console.log(sum()); //0
</script>
sun()函數(shù)接受任意數(shù)量的參數(shù)并在while循環(huán)中遍歷它們的值來求和。
4.重載
本質(zhì):讓一個(gè)函數(shù)可以接收一個(gè)字符串的簽名和接收兩個(gè)參數(shù)的簽名
<script>
function eat(){
var len = arguments.length;
switch (len){
case 0:
console.log("默認(rèn)");
break;
case 1:
console.log(arguments[0]);
break;
case 2:
console.log(arguments[0]+arguments[1]);
break;
}
}
eat(1);
eat(2,3) ;
</script>
5.對(duì)象方法(this)
①this對(duì)象(3種)
1.函數(shù)直接調(diào)用,this指向window
<script>
/*this*/
function say(){
console.log(this.name);
}
var name="jake";
/*函數(shù)直接調(diào)用,this指向window*/
say();
</script>
2.在事件中,this指向執(zhí)行事件的對(duì)象
<script>
var test = document.getElementById("test");
/*在事件中,this指向執(zhí)行事件的對(duì)象*/
test.onclick=function(){
this.style.background="pink"
}
</script>
3.在函數(shù)中,this指向執(zhí)行事件的函數(shù)
②改變this(3種)
1.call() 方法
function sayNameForAll(lable){
console.log(lable + ":" + this.name);
}
var a = {
name:"anan"
};
var b = {
name:"anqi"
};
// call 方法
sayNameForAll.call(this,"golbal");
sayNameForAll.call(a,"a");
sayNameForAll.call(b,"b");
2.apply() 方法(數(shù)組方法)
// apply 方法
sayNameForAll.apply(this,["global"]);
sayNameForAll.apply(a,["a"]);
sayNameForAll.apply(b,["b"]);
3.bind() 方法(函數(shù)方法)
// bind() 方法
var sayNameFora1 = sayNameForAll.bind(a);
sayNameFora1("a");
var sayNameForb1 = sayNameForAll.bind(b,"b");
sayNameForb1();
b.sayName = sayNameFora1;
b.sayName("b");