js day(5)函数上

一、debugger

function start(){
    console.log("000");
}
debugger;//调试器 步进
start();


二、函数三种声明方式

//1.函数声明方式
/*
first();
function first(){
    console.log("000");
}

//2.函数表达式声明方式
var second=function(){
	console.log(1+1);
}
second()
//3.使用Function构造函数
var third=new Function('console.log(1+1);');
third();*/

第一种,函数声明提升,在执行代码前会先读取函数声明,所以可以把函数声明放在调用它的语句后面

第二种一定要放在调用语句前面,否则报错


三、匿名函数作用

1.用于绑定事件

2.定时器setInterval

3.自调用函数(自动触发的)

setInterval(function(){console.log(Date()),1000})//每一秒输出当前时间
(function(){alert("自动执行此函数,无需调用");})();


四、argument对象,不是数组但是类似,伪数组

function sum(){
	console.log(arguments);
	for(var i=0;i<arguments.length;i++)console.log(arguments[i]);
	console.log(arguments.length);//arguments.length是实参个数
	console.log(sum.length);//形参个数
}
sum(10,20,30);


五、回调函数

//eg:计算器
	/*function f(a,b,fun){return fun(a,b);}
	function add(a,b){return a+b;}
	function min(a,b){return a-b;}
	function mul(a,b){return a*b;}
	function div(a,b){return a/b;}
	console.log(f(10,20,add));
	console.log(f(10,20,min));*/

//eg:斐波那契数列
	/*function f(i){
		if(i>=2) return f(i-1)+f(i-2);
		else return 1;
	}
	console.log(f(10));*/

//eg:累加
	/*function f(i){
		if(i==1)return 1;
		return f(i-1)+i;
	}
	console.log(f(10));*/


六、变量作用域

var name="00000";
function f(){
	name="11111";
}
f();
console.log(name);//输出11111


七、常见错误

1.

var name="000";
function f(){
	console.log(name);//undefined
	var name="1111";
}
f();*/

/*这里会先在作用域里面找到变量声明,然后提前,但是赋值位置不变,等价于以下代码*/

/*var name="000";
function f(){
	var name;//先找当前作用域变量,找到则声明提前,但是没有赋值
	console.log(name);//undefined
	name="1111";
}
f();

2.

f();
console.log(c);//10
console.log(b);//10
console.log(a);//error undefined
function f(){
	var a=b=c=10;
	console.log(c);//10
	console.log(b);//10
	console.log(a);//10
}

这里的var a=b=c=9;其中,a是局部变量,bc是全局变量!!


八、面向对象

var dog={
	name:"000",
	age:10,
	friends:["111","222","333"],
	go:function(){
		return console.log("go");
	}
};
dog.name="9889"
console.log(dog);
dog.go();


九、数据交换格式json

//json类似字面量对象,即八,但是其属性要全部括起来,在.json文件中,属性要加双引号
var dog={
	"name":"000",
	"age":10,
	"friends":["111","222","333"],
	"dd":{"name":"0001","age":30,"fr":["0","1","222"]}//对象也可以
};
//仅用于数据交换格式,两种形式:对象和数组。
for(var key in dog)console.log(dog[key]);//遍历对象

还有一种数据交互模式为xml

<xml>
	<name>小明</name>
	<age>15</age>
</xml>
但是其体积过大,先在一般用json








猜你喜欢

转载自blog.csdn.net/yiyiyixin/article/details/81054087