javascript基础-js函数

一、创建函数的方式

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
})(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),这时一定要小心,不要随便

原文地址:https://www.cnblogs.com/caoxb/p/9534887.html

时间: 2024-10-04 07:25:28

javascript基础-js函数的相关文章

JavaScript基础之函数与数组

 函数    函数的基本概念 为完成某一功能的程序指令(语句)的集合,称为函数.有的程序员把函数称为方法,希望大家不要被这两个名词搞晕了. 函数分为:自定义函数.系统函数(经常查看js帮助手册). js自定义函数基本语法: function 函数名(参数列表){ //代码语句 return 值;//有无返回值是可以选择的. } 参数列表:表示函数的输入 函数主体:表示为了实现某一功能代码块 函数可以有返回值,也可以没有 例,    函数.html: <!DOCTYPE html> <ht

JavaScript 基础回顾——函数

在JavaScript中,函数也是一种数据类型,属于 function 类型,所以使用Function关键字标识函数名.函数可以在大括号内编写代码并且被调用,作为其他函数的参数或者对象的属性值. 1.命名函数的创建和使用 <script type="text/javascript"> function 函数名 (形参列表) { //执行语句 return 返回值; } </script> 2.函数的参数和返回值 与C#,java等语言相比,JavaScript函

JavaScript基础-即时函数(Immediate Functions)

1.即时函数的声明方法 即时函数(Immediate Functions)是一种特殊的JavaScript语法,可以使函数在定义后立即执行:(function () {    alert('watch out!');}()); 下面分几部来理解这种写法: 橙色部分是一个函数表达式: 天蓝色的一对括号代表立即执行它,括号里是执行这个函数需要的参数(这个例子不需要参数): 再用一对括号(就是黑色的这一对)把上面的部分包起来. 黑色这一对括号可以让人明白这个表达式得到的是函数的返回值,而不是函数对象.

JavaScript基础及函数,BOM,DOM的节点及DOM节点操作

使用js的三种方式 1.直接在HTML标签中,使用事件属性,调用js代码: <button onclick="alert('点我呀')">点我啊!<tton> 2.在页面的任意位置,使用script标签 <script type="text/javascript"> alert('哈哈哈') </script> 3.外部:使用script标签 src属性选择外部地址, type属性选择"text/javasc

JavaScript基础之函数和变量作用域

函数:封装一项任务的步骤清单的代码段,再起一个名字 ( js中函数也是一个引用类型的对象,函数名其实也是引用函数对象的普通变量.) 函数对象:内存中专门存储一个函数定义的存储空间 函数定义的存储位置在window之外. 何时使用:一项任务可能反复使用时,就仅需要在函数中封装一次,反复调用函数即可. 如何声明函数: function 函数名([参数1,参数2,...]){ 步骤清单 return 返回值 } 参数:专门接受函数调用时,必要数据的变量 如何使用参数:在函数内,参数变量的使用和普通变量

javascript基础知识--函数定义

函数声明式 function funname( 参数 ){ ...执行的代码 } 声明式的函数并不会马上执行,需要我们调用才会执行:funname(); * 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束. 函数表达式 var x = function( 参数 ){ ...执行的代码块 }; 函数表达式定义的函数,实际上也是一个匿名函数(这个函数没有名字,直接存储在变量中) * 函数表达式结尾是要加分号的,因为它是一个执行语句. Function

JavaScript 基础(五) 函数 变量和作用域

函数定义和调用 定义函数,在JavaScript中,定义函数的方式如下: function abs(x){ if(x >=0){ return x; }else{ return -x; } } 上述abs() 函数的定义如下: function 指出这是一个函数定义; abs 是函数的名称: (x) 括号内列出函数的参数,多个参数以,分隔: {...}之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句. 注意:函数体内部的语句在执行时,一旦执行到return 时,函数就执行完毕,并将结果

JavaScript基础CallBack函数

前面提到,函数对象是可以作为参数传递给另一函数的,这时,作为参数的函数如果在内部被执行,那么它就是个回调函数(Callback): function writeCode(callback) { // do something... callback(); // ... } function introduceBugs() { // ... make bugs } writeCode(introduceBugs); 在上面的代码里,introduceBugs就作为writeCode的参数,在wri

javascript基础 方法 函数 闭包 集合

定义类 ,实例化对象类 ,调用 为类对象增加数据成员 --