1.arguments对象
arguments是window对象,即全局变量
functiion fun(a,b) {
console.log("fun top");
}
functiion fun(a,b,c) {
console.log("fun below");
}
fun(2,3);
fun(1,2,3);
==>fun below,funbelow
函数覆盖
arguments对象,js没有函数重载现象(所谓的重载,指函数名一样,参数一样)
function fn(a,b){
console.log(arguments);
}
fn(2,3); // 2,3
fn(2,3,4); // 2,3,4
fn(2); // 2
fn); //
==>每个函数都有一个arguments对象,用来接收用户传入所有的实参.arguments是类数组对象,(0:1,1:3,2: 4),是键值对。数组的大部分属性,arguments都含有,length等。
consoloe.log(arguments[0]); // 2
arguments[0] = 12;
console.log(arguments[0]); //12
2.用arguments模拟js重载
function fun (a,b) {
var len = arguments.length;
if(len==1){
return arguments[0]*2;
} else if(len==2){
return a+b;
} else {
throw new Error("参数个数必须是一个或者两个!");
}
}
// 求任意个数的和
function sum() {
var sum = 0;
for (var i =0;i< arguments.length;i++) {
sum += arguments[i];
}
return sum;
}
2. IIFE(即时调用函数表达式)
简称:立即执行函数
函数在定义的时候,就直接调用
function myfun() {}();执行错误
-->后面的()只有表达式才能够调用
方案一:
×function myfun() {}();
+function myfun() {}();
.....
上述解决方案,一般不使用。(降级)
方案二:
(fuunction myfun(){})();
-->如果用myfun();进行调用,是报错的
方案三:
(function (){console.log("asdfadsf");})();
-->匿名函数,自动执行
页面加载之前,只执行一次。
例:
实现一个传入三个参数,返回前两个参数中较大的数与第三个数的和
方法一:
function getSum(a,b,c) {
var max =a;
if (b>max){
max = b;
}
return max + c;
}
方法二:
function getSum (a,b,c) {
return (function (a,b) {
return a>b?a:b;
})(a,b) + c;
}
红色字体的原因是,先执行,且只执行一次。
3.闭包 (概要,后续详细介绍)
var arr = [];
for(var i =0;i<10;i++) {
arr[i] = function(){ // 数组中可以存放函数体
alert("sumida" + i);
}
}
-->arr[9](); // 10
4.DOM (概要,后续详细介绍)
JS --> 基础语法 (es6流行),DOM(重点),BOM(了解)
DOM整体感知 (Document Object Model文档对象模型)
一切皆节点。DOM树,元素节点。
docuemnt
|
html
head body
meta title table p span div ....
JS可以操作HTML的节点