js的函数基础

 

函数的声明:3种方法:

第一种:

关键字:function

声明方法:function 函数名(形参1,形参2.。。。) { 函数体  }

函数不掉用不执行: 调用方法:函数名();

 

第二种: 赋值命名法;匿名函数数

var fn = function(形参) { 函数体 }

 

第三种:构造函数命名法:

var fn  = new Function();

 

参数:

参数可以提高函数的复用性的变量;

函数 形参 相当于在函数中声明的局部变量;在全局中输出函数的形参 会报错;

函数名后边的括号里声明的参数为  形参;

调用过程函数时括号里的参数为  实参;

形参的默认值为underfind

 

方法重载和方法重写(强类型里面向对象语言);

方法重载:同一个函数名,不一样的形式参数个数,这两个是不同的函数;

子啊JS里没有方法重载;重要函数名相同就是同一个函数;

 

方法重写:子类继承的父类的方法,可以重新被覆盖掉;

JS里没有;

JS里相同的函数名,后边的方法会把前边的覆盖;

在声明的函数中;函数名.length的方法会返回函数的形参个数;

 

实参个数利用arguments内置对象来,只能在函数体内使用;

 

 

返回值:

函数内部的变量,函数外部无法直接访问;

想访问函数内部的变量,需要用返回值;

 

函数返回值问题:

函数没有设置return 或者设置了reurn后边没有加东西,函数都会返回underfiend;(函数默认返回值为underfind);

函数有return,并且在后边加了东西,返回return后边的值;

函数的return会终止函数的执行,return后边的函数代码将不再执行;

 

参数和返回值的总结:

 

 

接收函数的返回值时:

1.要定义变量接收函数返回值

2.直接打印执行函数

 

函数名 === 整个函数 === arguments.callee;

script标签加载时指教在函数名不加载函数体;

 

变量的作用域:

根据变量的作用范围可以分为:

全局变量:在哪里能被调用的变量;

1.函数范围外的变量;

2.任何位置不带有关键字var 声明的变量都是全局变量;

 

局部变量:只能在函数体内调用;

在函数范围内用var声明的变量为局部变量;(函数必须初始化才能被函数外访问)

 

局部变量函数执行完毕后立即回收;

 

函数的加载只加载函数名不加载函数体;只有当调用的时候才能加载函数里声明的全局变量;

 

for()循环中的变量为全局变量,但是也要看for循环的具体位置在哪里;

 

隐式全局变量:

 

function fn() {

  var n1 = n2 = n3 = 111;

}

其中的n2n3是隐式全局变量

 

 

(预解析)变量声明提升:

与解析:

1.排错(就是括号写不全等语法错误问题)

2.变量声明提升;

js的解析过程中,js把所有的变量函数全部提升到js的最顶端;

1.变量提升:不提升赋值程序,之提升变量的声明;

2.先提升变量正在提升函数

3.变量提升只提升声明,函数提升提升整个函数;

console.log(aaa);

var aaa = 111;

function aaa() {

alert(111);

}

打印的值为aaa函数;

3.调用函数时:提升效果相同;

4.return也不影响函数的提升

 

就近原则:

哪个变量近利用哪个变量;

 

posted on 2017-02-09 16:15  西下有米  阅读(106)  评论(0)    收藏  举报

导航