1、arguments:获取函数调用,传入几个参数,可以获取传入的每个参数值
arguments.length 实参的个数 arguments[索引] 实参的值
2、函数其它定义方式
命名函数:function 函数名(){循环体} 函数名();(重名函数覆盖,执行最后一个)
匿名函数:var 变量=function(){循环体}; (函数赋值要加分号) 变量();
函数自调用(声明同时调用,一次性):(function(){循环体})();
回调函数:函数作为参数使用,函数名(函数名);
函数可以作为返回值
3、作用域:使用范围
(1)全局变量:声明变量用var声明,在任何位置都可以使用,不会被删除
(2)局部变量:函数内部定义变量,外面不可以使用
(3)全局作用域:全局变量使用范围
(4)局部作用域:局部变量使用范围
(5)块级作用域:一对大括号可以看做一块,括号内变量使用范围,js没有块级作用域,函数除外
(6)隐式全局变量:声明变量没有var,可以被删除
(7)作用域链:从内到外搜索变量,找不到undefined
4、预解析:执行代码前,变量和函数声明提前到当前所在作用域的最上面,函数中的变量声明提升到该函数作用域的最上面(里面),多对script标签都有相同的名字的函数,预解析的时候是分段的,互不影响
5、对象:有特征(属性)和行为(方法),具体特指某一个事物
创建对象
(1)调用系统构造函数:var obj=new Object(); 添加属性:obj.名字=值; 添加行为:obj.名字=函数;
<1>变量类型验证:变量 instanceof 类型的名字---------true是这个类型false不是这个类型
<2>在当前对象方法中,可以使用this关键字代表当前的对象
<3>创建多个对象:创建对象代码封装在函数中
(2)自定义构造函数:function 命名(首字母大写)(参数){ } var obj=new 命名();
(3)字面量构造函数(一次性对象):var obj={ name: ,age: ,sayHi:function(){},eat:function(){} };
(4)obj.name=obj["name"](对象中确实有这个属性对象.属性名字或者对象[属性名字])
6、JSON:一般是成对的
var json={"name":"xiaoming","age":"10","sex":"nan"};
遍历用for-in循环:for(var key in json){console.log(json[key]);}(key变量,该对象所有属性的名字)
7、传递
值类型:传递的是值
引用类型:传递的是地址(引用)
8、内置对象
(1)Math对象:Math.PI---π Math.E---常数的底数 Math.abs(值)---绝对值 Math.ceil(值)---向上取整 Math.floor(值)---向下取整 Math.fround(值)---最近小数 Math.max(值)---一堆数字中最大值 Math.pow(x,y)---x的y次方 Math.sqrt(值)---开方 Math.random(值)---返回浮点(0—1)