1 定义

1.1

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

语法:

函数就是包裹在大括号中的代码块,前面使用了关键词 function

function 方法名(参数列表){

代码;

}

tips:

1)方法写完不会执行,只有调用时才执行

2)方法名是一个标识符,需要遵守标识符的命名规则

3)分号是用来分隔可执行JavaScript语句的,由于函数声明不是一个可执行语句,所以不以分号结束

1.2 函数表达式

JavaScript 函数可以通过一个表达式定义,

函数表达式可以存储在变量中:

示例:

var x = function (a, b) {

return a * b

};

在函数表达式存储在变量后,变量也可作为一个函数使用:

示例:

var x = function (a, b) {

return a * b

};

var z = x(4, 3);

tips:通过表达式定义的函数以分号结尾,因为它是一个执行语句(实际上就是给变量赋值,只不过这个值是一个函数,所以要加分号)。

1.3 匿名函数

在上面1.2中示例的函数实际上是一个 匿名函数 (函数没有名称)。

函数存储在变量中,不需要函数名称,通常通过变量名来调用。

2 调用

2.1 方法名(); 这样写就会调用一个方法

2.2 页面加载与函数调用的示例:

有一个a.js文件,一个b.js文件,引入到页面中:

<script src="a.js"></script>

<script src="b.js"></script>

当a文件调用b文件中的方法时,会报错,这是因为a文件在调用时,b还没有加载,所以就找不到定义的方法。

解决方法:

可以加一个页面加载完成

window.onload=function(){

调用方法;

}

tips:

1)页面加载过程是从上往下的,当整个html结束时(就是到最后一行代码),才叫做“页面加载完成”

2)一个html文件只能有一个window.onload,写在哪个文件没关系

3)一般window.onload里面只写方法的调用,方法的定义可以写在外面

2.3 函数提升

函数可以在声明之前调用,

使用表达式定义函数时无法提升。

2.4 自调用函数

示例: 匿名自我调用的函数

(function () {

var x = "Hello!!";      // 我将调用自己
})();

3 参数

3.1

在调用函数时,可以向其传递值,这些值被称为参数。

这些参数可以在函数中使用。

可以发送任意多的参数,由逗号 (,) 分隔:

myFunction(argument1,argument2)

当声明函数时,把参数作为变量来声明:

function myFunction(var1,var2)
{
代码
}

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

3.2 显式参数和隐式参数

函数显式参数在函数定义时列出。

函数隐式参数在函数调用时传递给函数真正的值。

3.3

方法定义的时候,小括号里面的参数叫形式参数(形参)

方法调用的时候,小括号里面的参数叫实际参数(实参)

示例:

function
show(a=0){

alert(a);

}

show();

上面的函数中,形参a被初始化了一个值。

我自己的理解:

当定义了形参时,就等于在函数中声明了一个变量,但是没有赋值;

只有在函数调用时,才给这个变量赋了值;

所以,形参是可以定义并赋值的,就是一个默认值;

当传入实参时,相当于值被改变了,如果没有传实参,那么参数还是有值的。

3.4 魔法参数:arguments

JavaScript 函数有个内置的对象 arguments 对象。

argument 对象包含了函数调用的参数数组。

示例:

function zyx(){

console.log(arguments);

}

zyx(1,2,3);

结果为:

4 返回值

有时,我们会希望函数将值返回调用它的地方。

通过使用 return 语句就可以实现。

在使用 return 语句时,函数会停止执行,并返回指定的值。

语法

function
myFunction()
{
    var x=5;
    return x;
}

return 值;

结束方法,返回后面的数据

练习:接收二个参数,比较大小

function getNum(){
var num1=prompt('输入第一个数');
var num2=prompt('输入第二个数');
compare(num1,num2);
} function compare(n1,n2){
if(n1>n2){
alert(n1+'比'+n2+'大');
} else if(n1<n2){
alert(n1+'比'+n2+'小');
} else{
alert(n1+'和'+n2+'相等');
}
} getNum();

5 其他

5.1 局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。

您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。

只要函数运行完毕,本地变量就会被删除。

5.2 全局 JavaScript 变量

在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

5.3 JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

 

5.4 向未声明的 JavaScript 变量分配值

如果您把值赋给尚未声明的变量,该变量将被自动作为 window 的一个属性。

这条语句:

carname="Volvo";

将声明 window 的一个属性 carname。

非严格模式下给未声明变量赋值创建的全局变量,是全局对象的可配置属性,可以删除。

JavaScript 函数(方法)的更多相关文章

  1. JavaScript 函数(方法)的封装技巧要领及其重要性

    作为一枚程序猿,想必没有人不知道函数封装吧.在一个完整的项目开发中,我们会在JS代码中对一些常用(多个地方调用)的操作进行一个函数的封装,这样便于我们调试和重复调用,以致于能够在一定程度上减少代码的冗 ...

  2. javascript 函数 方法

    函数 1.函数的定义 (1)function 函数名(x){ 函数执行体; } (2)var 函数名=function(x){ 函数执行体; }; 这种方法说明,在javascript中,函数就是一种 ...

  3. JavaScript 函数方法 - toString()

    Function.prototype.toString() 返回函数代码的字符串形式. 描述 Function 对象覆盖了从 Object 继承来的 Object.prototype.toString ...

  4. JavaScript 函数方法 - bind()

    Function.prototype.bind() ECMAScript5中新增的方法,但是在ECMAScript3可以通过模仿实现其方法作用 作用: bind() 方法会创建一个新函数,当这个新函数 ...

  5. 深入理解javascript函数系列第三篇——属性和方法

    × 目录 [1]属性 [2]方法 前面的话 函数是javascript中的特殊的对象,可以拥有属性和方法,就像普通的对象拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象.本 ...

  6. JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法

    函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留 ...

  7. ASP.NET后台中调用前台Javascript函数的几种方法

    做web开发,用的技术是aspx.net,可是由于比较习惯于ASP现在做起来,觉得非常别扭,原因在于有很多功能其实在前台可以处理的,但是因为用到了很多webcontrol,导致不断postback.如 ...

  8. JavaScript 函数的4种调用方法

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...

  9. JavaScript 函数定义方法

    JavaScript 函数定义方法. 函数声明 在之前的教程中,你已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立 ...

  10. javascript 实现函数/方法重载效果

    什么是重载? 在C#和JAVA等编程语言中函数重载是指在一个类中可以定义多个方法名相同但是方法参数和顺序不同的方法,以此来实现不同的功能和操作,这就是重载. JS没有重载,只能模拟重载 一般来说,如果 ...

随机推荐

  1. windwos 10 谷歌浏览器出现彩色闪条

    应该是上个星期五开始,发现电脑从别的地方切换到谷歌浏览器就会出现闪条,开始也没太注意,但是到周一还是这样,所以再网上查了下, 说什么的都有,什么你按脑屏幕坏了,内存条不行什么是的.后来才发现原来是谷歌 ...

  2. django-crontab 定时执行任务方法

    需求 每天请求一封邮件,并读取该邮件 这个其实可以使用linux 自带了crontab实现,但是毕竟是django 开发.想着不知道有没有方法可以从django 中实现. 简单搜索了下,这方面的方法确 ...

  3. BZOJ1861:[ZJOI2006]书架

    浅谈\(splay\):https://www.cnblogs.com/AKMer/p/9979592.html 浅谈\(fhq\)_\(treap\):https://www.cnblogs.com ...

  4. bzoj 2555 SubString —— 后缀自动机+LCT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2555 建立后缀自动机,就可以直接加入新串了: 出现次数就是 Right 集合的大小,需要查询 ...

  5. 湖南程序设计竞赛赛题总结 XTU 1237 Magic Triangle(计算几何)

    这个月月初我们一行三人去湖南参加了ccpc湖南程序设计比赛,虽然路途遥远,六月的湘潭天气燥热,不过在一起的努力之下,拿到了一块铜牌,也算没空手而归啦.不过通过比赛,还是发现我们的差距,希望这几个月自己 ...

  6. 如何用python最快的获取大文件的最后几行

    工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断.那么,这种情况下我们应该怎么做呢? 1)常规方法:从前往后依次读取 步骤:open打开日志文件. ...

  7. [codeforces219D]Choosing Capital for Treeland树形dp

    题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边. 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值.依然是两次dfs,套路解法. 对树形dp的理解:树形d ...

  8. installshield 6109错误解决方案

    电脑重装了一下过后,运行打包程序就一直报6109错误,网上也没有查找出相关答案,真是急死了,后来无意发现输出项目的发布路径和当前自己setup的路径不一致,由于移动了文件夹位置,这个路径没有跟随修改, ...

  9. php中的PCRE 函数,正则表达式处理函数。

    有时候在一些特定的业务场景中需要匹配,或者提取一些关键的信息,例如匹配网页中的一些链接, 提取一些数据时,可能会用到正则匹配. 下面介绍一下php中的一些常用的正则处理函数. 一.preg_repla ...

  10. 痞子衡嵌入式:微处理器CPU性能测试基准(Dhrystone)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是微处理器CPU性能测试基准Dhrystone. 在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone.MIPS.C ...