资讯专栏INFORMATION COLUMN

JavaScript中的函数个人分享

pkhope / 1748人阅读

摘要:函数函数的概述所谓函数就是只被定义一次但可能被执行或调用多次变量与函数的区别变量存的是数据内容而函数存的是语句块定义函数备注定义函数时函数体的内容不会被执行调用函数时函数体才被执行注意一般以个函数就去完成一个功能函数声明方式语法函数名称

函数 函数的概述

所谓函数就是只被定义一次,但可能被执行或调用多次

变量与函数的区别: 变量存的是数据内容而函数存的是语句块

定义函数

备注:

定义函数时 - 函数体的内容不会被执行

调用函数时 - 函数体才被执行

注意: 一般以个函数就去完成一个功能

1.函数声明方式:

语法: function 函数名称 () {
函数体 - 语句块 }

注意: 定义函数时 - 函数体的内容是不会被执行的

示例代码:

function fu(){
     console.log("一花一世界")
     }

2.字面量/直接量方式:

语法: var 函数名称 = function(){
函数体 }

示例代码:

var fun = function(){
    console.log("这是一个函数");
};

// 调用函数 -> 函数体的内容才被执行
fun();

注意: 控制台调用函数的语法是函数名加( )而不是console.log( )

示例代码:

/* 调用函数 */
fu()
变量与函数
var v = 100;/* 定义变量,并初始化值 */
console.log(v);/* 调用变量 */

// 变量是允许被重新赋值的
v = function(){
    console.log("这是一个函数");
}
// v既是个变量,又是个函数
console.log(v);// 调用结果为 [Function: v]
v();/* 函数的调用 */

控制台效果图:

注意: 一旦有同名的变量时下面的函数则不生效

示例代码:

var v2 = 200;
function v2(){
    console.log("这是一个函数");
}
// v2是变量 - TypeError: v2 is not a function - 表示 v2 不是一个函数
console.log(v2);
v2();

控制台效果图:

函数的参数

函数参数分类两种:

形参 : 就是定义函数后的小括号叫形参 - function fun(形参)

注意: 允许定义多个形参 - 形参之间使用逗号分隔

实参 : 就是调用函数后的小括号叫实参 - fun(实参)

注意: 形参的个数与实参不一定是一致的

参的个数多于实参的个数 -> 多余的形参没有值(默认为 undefined)

实参的个数多余形参的个数 -> 多余的实参没有对应的形参

形参与实参根据占位符进行一一对应

示例代码:

function fun(a){// 在函数中定义一个变量,但未初始化值
    console.log(a);
}
fun(100, 200);// 为函数中定义的变量初始化值
return语句

函数的return语句

注意:

并不是必要的 - 可有可无

作用 - 作为函数的返回值(数据内容)

用法 - 一般会被编写在函数体的最后面

示例代码:

function fun(){
    console.log("一花一世界");
    return 100;
}
/* 将函数的返回值 赋值到变量中 */
 var result = fun();
 console.log(result);

console.log(fun());/* 打印函数调用的结果 */
console.log(fun);/* 打印变量的值 */

函数的return语句

注意:

的确允许不编写在函数体的最后面

一旦return语句不在函数体的最后面 - return语句之后的代码都不再执行

示例代码:

function fn(){
    console.log("这是return语句之前...");
    return;
    console.log("这是return语句之后...");
}
var result = fn();
console.log(result);// 100
目前JavaScript得到undefined值的情况总结:

定义变量,但未初始化值

定义变量,并初始化值为 undefined

访问数组中不存在的位置 - 默认值为 undefined

在函数体调用没有定义值的形参 - 默认值为 undefined

当函数定义时,没有指定返回值 - 默认返回值为 undefined

作用域

就是变量和函数都有作用域,作用域就是变量和函数的可被访问范围,控制着变量和函数的可见性和生命周期- 函数作用域就是某一个函数里的

函数以外的叫全局作用域

备注: 函数作用域中的变量叫局部变量

全局作用域与局部作用域 全局作用域

全局作用域(函数作用域之外的范围) - 全局变量

全局变量的作用域 - 全局作用域 + 函数作用域

注意: 全局作用域不能访问局部变量

全局作用域与局部作用域示例代码对比:

var v1 = 100;
console.log(v1);

function fun(){
    /*
        函数作用域 - 局部变量
        * 局部变量的作用域 - 当前函数作用域
     */
    var v2 = 200;

    console.log(v1);
    console.log(v2);
}

console.log(v1);

fun();
// 全局作用域不能访问局部变量
// console.log(v2);

function fn(){
    console.log(v2);
}
fn();
局部作用域与函数的参数

局部变量 - 作用于当前函数作用域中

局部变量的值 - 只能在当前函数作用域进行初始化

函数的参数 - 作用于当前函数体中

参数的值(实参) - 在全局作用域中传递的

示例代码:

var num = 200;

function fun(a){
    var v = 100;

    console.log(v + a);
}
fun(num);

控制台调用图:

按值传递

是指将函数实参的变量值赋值给函数形参,使实参和输出结果一样

在对局部变量进行修改时,不会修改全局变量

示例代码:

/* 按值传递 */
var num = 100;/* 定义一个全局变量 */
/* 定义一个函数 */
function fun(num){/* 形参 */
    num++;
    console.log("这是函数内部的值: " + num);// 101
}
/* 调用指定函数 - 实参传递的是全局变量的值 */
fun(num);/* 实参 */
/* 调用指定全局变量 */
console.log("这是全局作用域的值: " + num);// 100 101


var v = 200;
function fn(){
    v++;
}
fn();
console.log(v);// 201
声明提前

表示在使用变量时,先调用变量,在对变量进行定义

注意: 语法不会报错,会显示 undefined

示例代码:

console.log(num);// undefined

var num = 100;/* 定义全局变量 */
/* 定义函数 */
function fun(){
    // 全局变量与局部变量同名时 - 在当前函数作用域中只能访问局部变量
    console.log(num);// undefined

    var num = 200;/* 定义局部变量 */
    // 就近原则
    console.log(num);// 200
}
/* 调用函数 */
fun();
// 局部变量在全局作用域中无法访问 - 只能访问全局变量
console.log(num);// 100

控制台调用图:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96885.html

相关文章

  • JavaScript面向对象中的this关键字个人分享

    摘要:关键字关键字描述本身没有任何含义但它也可以代表任何含义被自动定义在所有的函数作用域中都有一个共同点它总是要返回一个对象指向哪个对象不取决于定义在哪它取决于调用位置注意建议搞不明白时尽量不要使用否则会很混乱一定要理解之后使用的基本用法表示在函 this关键字 this关键字描述 this本身没有任何含义,但它也可以代表任何含义 this被自动定义在所有的函数作用域中 this都有一个共...

    nevermind 评论0 收藏0
  • JavaScript面向对象中的继承个人分享

    摘要:继承原型链所谓言行链就是如果构造函数或对象的原型指向构造函数或对象的原型再指向构造函数或对象以此类推最终的构造函数或对象的原乡指向的原型由此形成一条链状结构被称之为原型链示例代码原型链通过构造函数创建对象将的原型指向对象通过构造函数创建对象 继承 原型链 所谓言行链就是如果构造函数或对象A,A的原型指向构造函数或对象B,B的原型再指向构造函数或对象C,以此类推,最终的构造函数或对象的原...

    Coly 评论0 收藏0
  • JavaScript中的数组个人分享

    摘要:数组数组的概念所谓数组就是用来存储多个值的容器数组中的每一个值叫元素每个元素都有唯一的一个位置用数字表示的叫做索引数组用字符串表示叫关联数组备注数组是无类型的没有特定类型要求就是存啥都行注意数组是动态的就是根据需要可以插入新的东西也可以删 数组 数组的概念 所谓数组就是 - 用来存储多个值的容器,数组中的每一个值叫元素,每个元素都有唯一的一个位置,用数字表示的叫做索引数组,用字符串表...

    Sanchi 评论0 收藏0
  • JavaScript面向对象中的严格模式个人分享

    摘要:严格模式严格模式的概念所谓严格模式就是对中的一种限制性更强的方式属于代码的一种强制规则来规范代码的格式简单的说就是必须按照严格模式的规则书写代码否则就会报错严格模式修正了一些引擎难以优化的错误同样的代码有些时候严格模式会比非严格模式下更加快 严格模式 严格模式的概念 所谓严格模式就是对JavaScript中的一种限制性更强的方式. 属于代码的一种强制规则,来规范代码的格式简单的说就是...

    lordharrd 评论0 收藏0
  • JavaScript面向对象中的Function类型个人分享

    摘要:类型与函数的概念函数这样的一段代码它只定义一次但是可能被执行或调用多次类型是提供的引用类型之一通过类型创建对象在中函数也是对象的形式存在注意每个函数都是以个对象与函数函数声明方式示例代码一笑一人生字面量方式示例代码一花一世界判断函数是否为类 Function类型 Function与函数的概念 函数这样的一段JavaScript代码,它只定义一次,但是可能被执行或调用多次 Functi...

    LeviDing 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<