javascript基础-js函数
2024-08-28 16:51:42
一、创建函数的方式
1)普通方式
function cal( num1, num2 ) {
return num1+num2;
}
2)使用变量初始化方式
var plus = function(num1, num2) {
console.log(num1 + num2);
}
// 调用
plus(15,20);
3)使用构造函数
//这种方式不推荐使用,这种语法会导致解析两次代码
var box = new Function("num1", "num2", "return num1+num2");
console.log(box(1,3));
console.log(typeof box); //输出:function 表示function类型的字符串
4)作为函数的返回值传递
function fun(num){
return num+10;
}
function fun1(fun, num){
return fun + num;
}
var result = fun1(fun(10), 10); //fun2(10)这里传递的是函数的返回值,和普通的变量一样
console.log(result);
5)将函数本身进行传递
function fun2(fun, num){
return fun(num);
}
var result = fun2(fun, 10);
console.log(result)//打印result变量,即函数
console.log(result( ))//调用函数并打印return的结果
二、匿名函数
1)普通函数
function box( ) {
console.log("1");
}
2)匿名函数
单独的匿名函数是不能运行的,就算能运行,也无法调用
function( ) {
return "Lee";
}
3)把匿名函数赋值给变量
var box = function( ) {
return "box:匿名函数";
}
4)自调用匿名函数
(function(){
console.log("1");
})( );
或
(function( ) {
console.log("2");
}( ));
5)自调用匿名函数赋值给变量
//如果没有后面的(),将打印出函数
var test = (function( ) {
return "test:匿名函数";
}) ( );
console.log(test); console.log((function( ) {return "自我执行后用的打印"})( ));
6)匿名函数的传参
(function(age){
console.log(age); //
})(25);
7)函数里的匿名函数
function box2( ) {
return function( ) { //(闭包-函数里面的函数)
return "函数里的匿名函数";
}
}
console.log(box2( )( ));
或
var b=box2( );
console.log(b( ));
三、闭包
概念:闭包就是能够读取其他函数内部变量的函数
用途:1.可以读取函数内部的变量;2.让这些变量的值始终保持在内存中
优点:可以把局部变量驻留在内存中,避免使用全局变量(使用全局变量的缺点:污染较大)
缺点:由于闭包里作用域返回的局部变量资源不会被立即销毁回收,所以可能会占用更多的内存。过度使用闭包会导致性能下降。在IE中可能导致内存泄露。解决方法 是,在退出函数之前,将不使用的局部变量全部删除。
1)通过闭包返回局部变量
function box( ) {;
var age = 32;
return function( ) {
return age;
};
}
console.log(box( )( ));
例1:使用全局变量来进行累加
var num = 100;
function test(){
num++;
}
console.log(num); //执行第一次:101
test();
console.log(num); //执行第二次,102
例2:使用局部变量进行累加(只能执行一次)
function test2(){
var i = 100;
i++;
return i;
}
console.log(test2()); //执行第一次,101
console.log(test2()); //执行第二次,101
2)使用匿名函数实现局部变量驻留内存中,从而累加
function test3(){
var a=100;
return function(){
a++;
return a;
};
}
//错误调用方法:
console.log(test3( )( )); //执行第一次,101
console.log(test3( )( )); //执行第二次,101
//正确调用方法:
var t = test3();
console.log(t( )); //执行第一次,101
console.log(t( )); //执行第二次,102
t = null; //解除引用,等待垃圾回收(销毁)
console.log(t()); //将抛出异常
闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便
最新文章
- java 终端练习
- 利用Kinect将投影变得可直接用手操控
- activity启动模式区别和优化
- 前端人员一定要掌握的PS技巧
- IDH2.5.1. Pain Points
- git常用命令,git版本控制和Xcode结合使用,用Xcode提交到github,github客户端使用
- python标准库介绍
- 验证你的邮箱是不是qq邮箱
- Android Paint的使用以及方法介绍(附源码下载)
- JAVA 线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- Android Screen Monitor使用
- python 浅析对return的理解
- Array类的Sort()方法
- vue.js权威指南 PDF
- 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践
- C#分割字符串并统计重复出现的次数
- 【noip 2012】提高组Day2T3.疫情控制
- json转换学习
- 34 【kubernetes】安装手册
- 洗礼灵魂,修炼python(11)--python函数,模块
热门文章
- Mysql 建表时报错 invalid ON UPDATE clause for 'create_date' column
- 怎样安装 OpenJDK 8 in Ubuntu 14.04 &; 12.04 LTS
- 201621123005《Java程序设计》第二周学习总结
- allow-hotplug eth0 allow-hotplug error
- BZOJ5435: 取石子(博弈)(占位)
- Java并发--lock锁详解
- CF1114B Yet Another Array Partitioning Task
- BZOJ5336 TJOI2018 party 【状压DP】*
- 部署经验Docker
- WampServer的配置