JavaScript的函数

一,初识函数

一个函数是js中一组执行任务或计算的语句。一个js函数用function关键字定义,后面跟着函数名和圆括号。

1.预定义函数

js语言有好些个顶级的内建函数:

eval()对一串字符串形式的js代码字符求值
isFinite()判断传入的值是否是有限的数值。如果需要的话,其参数首先被转换为一个数值
isNaN()判断一个值是否是NaN
parseFloat()解析字符串参数,并返回一个浮点数。
parseInt()解析字符串参数,并返回指定的整数。
decodeURI()函数对先前经过 decodeURI 函数或者其他类似方法编码过的字符串进行解码。
decodeURIComponent()对先前经过encodeURIComponent函数或者其他类似方法编码过的字符串进行解码。
encodeURI()通过用多个转义序列表示字符的 UTF-8 编码替换统一资源标识符(URI)的某些字符来进行编码(每个字符对应四个转义序列,这四个序列组了两个”替代“字符)。
encodeURIComponent()通过用多个转义序列表示字符的 UTF-8 编码替换统一资源标识符(URI)的每个字符来进行编码(每个字符对应四个转义序列,这四个序列组了两个”替代“字符)。

2.自定义函数

一个函数定义依次为:函数的名称,函数参数列表,定义函数的js语句,用大括号括起来。

//函数声明
function fun(num){
    num++;
}
//函数表达式
var ji=function(num){
    num--;
};

3.预解析

预,就是提前,而预解析,顾名思义就是提前解析代码,在js中,代码都是一行一行按顺序从上往下执行的。预解析的出现打破了这一规则。预解析主要做了件事:把变量,函数的声明被提前了。

4.函数自调用

在自定义函数中,如果函数没有名字,如“functon (){}”,则被称为匿名函数。那么,匿名函数该如何调用呢?

(function (){
    //函数体
})();

 在上述代码中,将“function (){}”匿名函数放在一对“()"中,就实现了调用,它被称为函数自调用。

5.回调函数

function f1(fn){
    console.log("f1函数被调用了");
    fn();
};
function f2(){
    console.log("f2函数调用了")
};
f1(f2);

在上述代码中,当调用f1()函数时,将f2()函数作为参数传入,运行时,首先输出“f1函数调用了”,之后输出“f2函数调用了”。 

二,局部变量和全局变量

1.局部变量和全局变量的概念及使用

局部变量是在函数内部声明的变量(必须使用var),只有在函数内部访问它。其特点是可以在不同的函数中使用名称相同的局部变量。

作用域:局部变量仅作用在函数中,而全局变量作用于整个脚本。

声明位置:局部变量声明的位置在函数中,而全局变量可以声明在使用之前的任何位置。

生存期:局部变量在函数运行以后被删除,而全局变量在页面关闭后被删除。

2.隐式全局变量

如果变量声明时没有var,则被称为隐式全局变量。使用var声明的变量不会被删除,而没有使用var声明的变量可以被删除,delete 变量名。

三,作用域和作用域链

1.作用域和块级作用域

作用域(Scope)就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。块级作用域是由大括号限定的。

2.作用域链

当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级执行上下文的变量对象中查找,一直找到全局上下文的变量对象,及全局变量,这样由多个执行上下文的变量对象构成的链表就被称为作用域链(Scope Chain)。

四,闭包

闭包是指有权访问另一个函数作用域中的变量的函数。主要分为两步:

1.在函数的内部,在定义一个函数。

2.把内部函数作为返回值。

闭包的作用主要有两个:

1.可以读取函数内部的变量

2.可以让这些变量的值始终保存在内存中。

缺点也有两个:

1.由于闭包可以读取函数内部的变量,所以闭包也可以在父函数外部改变父函数内部变量的值。

2.由于闭包会使得函数中的变量都被保存在内存中,所以内存消耗很大。

本章总结

胜人者智,自胜者强。不是成功离我们太远,而是我们坚持的太少

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zou_xi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值