一、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