JS的几种函数格式 你见过吗

844 阅读1分钟

一、常规写法

使用function关键字定义函数 -- 具有优先级,优先将function关键字定义的函数优先执行

// 函数的定义
function Father(){
    alert('Kobe');
}
// 函数的调用
foo()

二、匿名书写

使用函数表达式的形式定义函数(即将匿名函数复制给变量)

// 函数的定义
var Father = function(){
    alert('匿名函数定义');
}

// 函数的调用
foo()

三、对象里的方法

// 定义
var Father = {
    f1: function(){  },
    f2: function(){  }
}

// 调用
Father.f1();
Father.f2();

四、构造函数的方法

// 给对象添加方法
var Father = function(){ };  // 定义函数对象
Father.prototype.test = function(){ 
    alert('这是在在foo函数上的原始对象上添加test方法,构造函数中用到');
}

// 调用
var myFather = new Father(); // 创建对象
myFather.test(); // 调用对象属性

五、自调用函数

1.( function ( “ 参数 ” ) { " 函数方法 " ; } ) ( “ 给参数传的值 ” )
2.( function ( " 参数 " ) { “ 函数方法 ” ; } ( " 给参数传的值 " ) )
//!可以换作其他运算符或者void。
3.! function ( " 参数 " ) { " 函数方法 " ; } ( " 给参数传的值 " )

自执行函数是很自私的,它的内部可以访问全局变量。但是除了自执行函数自身内部,是无法访问它的。例:

function aaa(a1,b1){
  return sum1 = a1 + b1
},
(function bbb(a2,b2){
  return sum2 = a2 + b2
;}(),
console.log(aaa)
console.log(bbb)

这是一个函数与一个自执行函数,输出这两个函数会发现:函数aaa被全部打印出来,而bbb则报错。自执行函数相当于一个瓶口朝下的杯子,当定义它的时候,它会倾斜,把杯口露出来,吸收外面的新鲜空气;当它执行完毕,杯口不再外露,紧闭起来,与外界再无关联。