作用域
定义:变量起作用的范围
变量根据定义的位置分为两类:
在函数外部定义的变量称为全局变量,作用域:在页面的任何角落都可以访问到
在函数内部定义的变量称为局部变量,作用域:只能在函数的内部访问
注意:
1、如果在函数内部给一个为声明的变量赋值,则给这个变量自动变为全局变量
2、变量的作用域在函数定义的时候已经确定了下来
3、函数里面的变量只在全局变量里面寻找,不在执行区域里面寻找
函数的生存周期:全局变量只有在页面关闭的时候才会销毁;局部变量在函数执行完毕的时候就自动销毁
拓展(with语句)
定义:为一个或者一组语句指定默认对象。
注意:在严格模式下,with语句不能使用。
提示:with语句是运行缓慢的代码块,尽量避免使用。
with(document) {
write('龙岂池中物,');
write('乘雷欲上天。');
write('云雨交合处,');
write('是谁在呼唤!');
}
回调函数:
定义:如果一个函数是通过指针调用的,则就是回调函数;一个函数在另外一个函数里面执行的叫做回调函数,一般执行需要一个条件
指针:先简单的理解为通过函数名称执行的函数
递归函数:
定义:如果一个函数在内部调用了自身,则称为递归函数
特点:
1、必须有一个明确的递归结束条件,称为递归出口
2、自身调用自身
3、不确定循环的次数
/*
分析:
{
var num = 1;
num++; // 2
if(num < 5) {
{
var num = 2;
num++; // 3
if(num < 5) {
{
var num = 3;
num++; // 4
if(num < 5) {
{
var num = 4;
num++; // 5
if(num < 5) {
print(num);
}
console.log(num); // 5
}
}
console.log(num);
}
}
console.log(num);
}
}
console.log(num);
}
*/
function print(num){
num++;
if(num<5){//递归出口
print();//满足条件就调用函数
}
console.log(num);
}
print(1);
//最后执行结果是5,4,3,2
匿名函数:
定义:没有名字的函数
应用:用表达式创建一个函数的时候就没有名字
例: (function(){})();
构造函数:
定义:在new出来的函数才是一个构造函数,返回值都是一个对象,构造函数的函数名首字母一般大写
function Person(){
alert(1);
}
var obj = new Person();//Person()就是一个构造函数
console.log(obj);//弹出1
var fun = new Function ();//Function 构造函数 创建一个新的Function对象。 在 JavaScript 中, 每个函数实际上都是一个Function对象。
console.log(fun);