1.变量
a)局部变量:在所有函数内部定义的变量,或者在函数内部未使用var声明的变量也属于全局变量.
b)全局变量:在所有函数外部定义的变量.
eg:
1)
var a = 5,b = 4, c = 6;
function sum() {
var c = a + b; 前面有var声明且在函数内部为局部变量。若没有var声明直接为c = a + b;则为全局变量。
console.log(c);结果为9输出的局部变量c
}
sum();
console.log(c);结果为6.输出的全局变量c=
2)
var a = 5; (function () { var a = 7;7为局部变量,sum函数搜索不到该变量。 sum(); })(); function sum() { console.log(a + 4);只能搜索到全局变量5。输出结果为9. }
2.with扩展
with(document){
write("若如霜寒,断痕兮");
write("若如霜寒,断痕兮");
write("若如霜寒,断痕兮");
}简化了代码冗余类似于封装函数.
3.回调函数
eg:比较两个数的大小
function reduce(a,b,sort,sort2){ var c = a - b; if(c < 0){ sort(); }else { sort2(); } } reduce(2,3,function sort(){alert("a<b");},function sort2(){alert("a>b");});
4.递归函数:调用自身的函数.
eg:
function print(num) { num++; if(num < 5) { print(num); } console.log(num); } print(1);结果为5,4,3,2.
5.匿名函数
eg: (function(){})();表达式函数,自动启动的函数.
6.构造函数
eg:
function Person(){ alert("构造函数"); } var m = new Person(); console.log(m);
注:构造函数主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用。构造函数名称首字母一般都大写。
7.扩展一
function dog(){}; dog.play = function (){ doing = prompt("王八在不在?"); if(doing == "不在"){ alert("再说一遍 "); return dog.play(); }else if(doing == ""){ alert("听话"); return dog.play(); }else if(doing == "在"){ alert("嗯,乖"); } else{ alert("狗子你变了"); return dog.play(); } alert("我们还是好朋友."); } dog.play();