在Javascript中函数是动作能执行完成的保障,在JavaScript中定义函数有以下三种方式:
1.匿名函数形式
var fun=new Function("console.log('这是我第一个函数');");
2.普通定义函数,在标签中声明调用
function fun2(){
console.log("这是我的第二个函数");
alert("哈哈哈哈");
}
fun2();
3 .类似于定义变量方法定义函数,即封装函数
var fun3=function(){
console.log("封装函数");
};
fun3();
函数参数的使用:
1.函数中可以使用参数,且可以在创建函数时声明参数
2.函数在调用时,不会检查参数类型也不会检查实参的数量 多余的实参不会
被赋值 没有对应实参则是undefined
立即执行函数:有以下两种创建方式,JS 立即执行函数可以让函数在创建后立即执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。立即执行函数只有一个作用:创建一个独立的作用域。这个作用域里面的变量,外面访问不到(即避免了「变量污染」)。
(function(){
...
})();
(function(){
...
}());
函数的作用域:
调用函数时 创建函数作用域 每调用一次就创建一个新的函数作用域
在函数作用域中可以访问到全局变量
在全局作用域中无法访问到局部变量
当在函数中操作一个变量时 会先在自身作用域中寻找 然后在向上一级作用域中寻找依次类推
在函数中访问一个全局变量时 可以使用window.的方式访问
在函数作用域中也有声明提前的方式 函数声明也会在所有代码之前执行
在函数中不使用var声明的变量都会成为全局变量
this的使用
解析器在调用函数每次都会想函数内传递一个隐含的参数
这个参数就是this this 指向对象 称为上下文对象
根据函数调用方式的不同 指向不同的对象
1.以函数形式调用时 this永远是window
2.以方法形式调用时 this调用方法的对象
构造函数的创建
var obj=new Person();
/*
创建一个构造函数 专门来创建Person对象的
构造函数时一个普通函数 创建方式和普通函数没区别
调用方式的不同
构造函数需要使用new
执行流程
1.立即创建一个函数
2.将新建的对象设置为函数中的this在构造函数中可以使用this来引用新建的对象
3.逐行执行函数中的代码
4.将新建的对象做为返回值返回
使用同一个构造函数创建的对象称为一类对象 也将该对象称为该类的实例
可以使用instanceof检查
*/
function Person(name,age,gender ){
this.name=name ;
this.age=age;
this.gender=gender ;
this.sayName=function(){
alert(this.name);
};
}