2018-09-25

1. 函数(方法):

实现了某一个功能的操作的集合。
函数的原则:功能单一。

2. 函数的定义(申明):

函数的定义并不会执行函数,函数生效是在调用的地方。

2.1 使用函数的关键字function申明

function name(){

}

2.2 使用函数表达式申明。一般使用的是匿名函数

var func = function(){

};
Odiv.onclick = function(){

};

2.3对象申明法

var func = new Function(a,b,c,'return a+b;')
var func = function(a,b,c){
return a+b;
}

3.函数的重复申明

函数的重复申明类似于变量的重复赋值,后面的会覆盖前面的。
所以生效的永远是后面的函数。

4. 函数的提升

函数的提升类似于变量的提升,在JS里面所有的 变量申明以及函数申明都会在执行代码之前运行。
函数内部的变量申明,也会出现变量的提升,但是这个提升只能提升到函数的最前面,不能提升到函数的外部。

5.()

申明的时候,括号里面是放置参数的,不能省略,即使没有参数也要有。
调用的时候,括号里面传入的是实际的数据,表示函数的执行。

6. 函数的参数

JS参数的意义:能够获取到外面的“值”,但是里面的修改不会影响到外面。
形参:形式参数,函数定义的括号里面的,只能是一个变量。相当于一个占位符,没有实际意义,只是方便函数里面去获取外面的数据。相当于给函数的内部申明了一个变量,不过这个变量可以获取外面的数据。
实参:实际参数,函数调用的时候传入函数内部的数据。必须是具体的值或者变量。

7. 作用域

概念:变量起作用的区间
全局作用域:函数外面的叫做全局作用域
局部作用域:函数内部的作用域叫做局部作用域
全局作用域的变量能够在任何地方使用,局部作用域的变量只能在函数的内部使用,不能再函数的外部使用。

作用域链:
JS所特有的。一个变量在函数内部找不到的时候,回去函数外部查找,如果一直到最外部(window)没找到那么就产生not defined 错误,但是有时候并不是单纯的内部与外部关系,而是很多层。这个时候内部要查找的时候就要一层一层向外查找,直到找到为止。这个就是作用域链。

8.返回值。

一个函数是实现某一个功能的,实现了没有怎么判断?
计算1-100之间所有数字的和。
function sum(){
var sum =0;
for(var i=1;i<101;i++){
sum+=i;
}
return sum;
}

var a = sum()+10;
函数胡执行完成之后,内部的结果想要告诉函数的调用者。那么就要使用函数的返回值,函数的返回值只能有一个。
语法是在所有的函数内部的语句之后添加一条return语句。
想要返回什么就在return后面写什么。
任何调用这个函数的地方都可以会去到这个返回值。

9.函数申明的优先级

如果一个表达式申明的函数与一个使用function关键字申明的函数具有相同的调用方式。那么最终生效的永远是表达式申明的函数,也就是说表达式申明的函数优先级高。

10.不要在if以及所有判断里面申明函数。

11.函数的属性以及方法。

面向对象。函数也是一个对象。对象就是具有方法以及属性的一个个头。
name属性: 函数名。
length属性:形参参数的个数。
toString():函数字符串自己。

12.参数

参数的默认值。有的参数并不是必须要传递的,没有传递的时候可以设置一个默认的来执行。这个时候就可以使用默认值语法。

一般来说函数的在调用的时候传递的参数的个数要和函数申明的时候申明的参数的个数要一致。如果某一个参数没有传递,那么实参与形参的对应关系式从前向后的。也就是说后面的参数总是被先省略。

13.参数的传递方式

值传递:
var a = 10;
b = a;
b = 11;
a = ? 10
对于简单数据类型的参数传递使用的就是值传递。(数字,字符串,布尔值)。
var a = 100;
function s(m){
console.log(m);
console.log(a);
m = 0;
console.log(m);
console.log(a);
}
s(a);
console.log(a);
console.log(m);
引用传递(地址传递):
var zhangsan = {};//对象
zhangsan.age = 18;
zhangsan.height = 178;
zhangsan.weight = 180;
function s(b){
b.age = 22;
}
s(zhangsan);
console.log(zhangsan.age);

14.arguments对象

参数对象,能够在函数的内部获取到所有传入的参数的集合。
是一个类数组对象。
出现原因:

  1. 如果传入的参数的个数是不确定的。例如:返回传入n个参数的最大值。

  2. 申明函数的时候参数的个数比调用函数的时候传入的参数个数少。

15.函数分类

系统函数,JS自己定义好的函数
自定义函数,用户自己定义的函数

16.匿名函数:没有名称的函数,这个函数只是定义的时候直接赋值生效。

立即函数(自执行函数):就是函数在定义的时候自动调用一次。
不能使用在函数关键字申明的函数后面直接加上小括号不表示执行,因为JS的解析器认为function开始的语句就是函数定义。

表达式申明:可以使用表达式申明的函数后面加上小括号表示执行。
其实对于JS解析器来说只要不是function开始都可以实现自执行。
(function s(){}());
(function(){})();
利用上面的这个自执行的特点,可以实现用户的一个局部作用域空间,这样可以防止变量的污染。
其实对于JS解析器来说只要不是使用function开始申明的函数都是可以加上小括号表示自执行的。
!function s(){}();
~function(){}();
+function(){}();
-function(){}();

17.回调函数

就是在某一个地方(函数内部)根据一个条件去调用其他函数。
在不修改原代码的基础上实现新的功能。
对修改封闭,对扩展开放。开放封闭原则。

18.递归函数

在函数的内部自己调用自己实现某一个操作。
递归函数是一定具有结束条件的,没有结束条件就变成了死循环。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,145评论 0 13
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,179评论 0 3
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,745评论 2 17
  • 這篇文章讓我重新復盤起一個重要的觀念: 只有自己是貴人,別人才更有可能幫助你。 身為一個業務,要如何讓客戶願意跟你...
    rusty6kimo阅读 134评论 0 0
  • 爱情里出现第三者并不可怕 可怕的是从那以后两个人会错意 对错话 曾经的信任土崩瓦解 他们质问对方的每一句话都如陀螺...
    黄社长阅读 270评论 0 0