一、函数
1.声明还是表达式
<script>
//1、函数声明
function a(num1,num2){
return num1 + num2;
}
// 2、函数表达式
var b = function (num1,num2){
return num1 + num2;
};
// 先定义,再使用
</script>
2.函数就是值
<script>
// function sayHi(){
// console.log("Hi!");
// }
// sayHi();
// var sayHi2 = sayHi;
// sayHi2();
// sort() 是将对象转化成字符串然后进行比较
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>
数组排序的封装函数
GLOBAL.namespace("Array");
GLOBAL.Array.arraySort=function(arr){
arr.sort(function(a,b){
return a-b;
})
};
3.参数
arguments 是一个类似于数组的对象,其本质并不是对象。
arguments 对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。
<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()函数接受任意数量的参数并在while循环中遍历它们的值来求和。
4.重载
本质:让一个函数可以接收一个字符串的签名和接收两个参数的签名
<script>
function eat(){
var len = arguments.length;
switch (len){
case 0:
console.log("默认");
break;
case 1:
console.log(arguments[0]);
break;
case 2:
console.log(arguments[0]+arguments[1]);
break;
}
}
eat(1);
eat(2,3) ;
</script>
5.对象方法(this)
①this对象(3种)
1.函数直接调用,this指向window
<script>
/*this*/
function say(){
console.log(this.name);
}
var name="jake";
/*函数直接调用,this指向window*/
say();
</script>
2.在事件中,this指向执行事件的对象
<script>
var test = document.getElementById("test");
/*在事件中,this指向执行事件的对象*/
test.onclick=function(){
this.style.background="pink"
}
</script>
3.在函数中,this指向执行事件的函数
②改变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() 方法(数组方法)
// apply 方法
sayNameForAll.apply(this,["global"]);
sayNameForAll.apply(a,["a"]);
sayNameForAll.apply(b,["b"]);
3.bind() 方法(函数方法)
// bind() 方法
var sayNameFora1 = sayNameForAll.bind(a);
sayNameFora1("a");
var sayNameForb1 = sayNameForAll.bind(b,"b");
sayNameForb1();
b.sayName = sayNameFora1;
b.sayName("b");
网友评论