返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解JavaScript的函数简介
  • 944
分享到

详解JavaScript的函数简介

2024-04-02 19:04:59 944人浏览 安东尼
摘要

目录函数简介函数function创建函数构造函数创建函数函数声明创建函数函数表达式创建函数函数的参数形参(形式参数):实参(实际参数):函数的调用通过对象调用new调用函数的返回值立

函数简介

函数function

  • 函数也是一个对象
  • 函数是实现功能的n条语句的封装体,需要的时候就可以随时调用
  • 函数可以执行的,其他类型的数据不能执行
  • 使用typeof检查一个函数对象时,会返回function

优点:

  • 提高代码的复用
  • 便于阅读交流

创建函数

构造函数创建函数

语法


var fun =new Function(代码块);

这种形式构建函数的比较少。

函数声明创建函数

语法:


function 函数名(形参1,形参2......形参N){
    语句...
}

函数表达式创建函数


var 函数名 = function 函数名(形参1,形参2......形参N){
    语句...
}

函数的参数

形参(形式参数):

  • 在函数中的()中指定一个或多个形参
  • 多个形参之间使用,隔开,声明形参就相当于在函数内部声明了对应的变量,但是并不赋值

实参(实际参数):

  • 在调用函数时,可以在()中指定实参
  • 实参将会赋值给函数中相应的形参
  • 调用函数时,解析器不会检查实参的类型(所以要注意,是否有可能会接受到非法的参数,如果有可能则需要对参数进行类型检查)

function sum(a, b) {
    console.log(a + b);
}
sum(1, 2);//调用函数,传入实参

在这里插入图片描述

参数的数量:

  • 函数的实参和形参的个数可以不同
  • A、实参的个数多于形参的个数:函数正常运行,多余的实参被忽略
  • B、实参的个数少于形参的个数: 多余的形参会变成undefined的变量

问题: 在javascript中调用函数时传递变量参数时,是值传递还是引用传递?

  • 理解1:都是值(基本/地址值)传递
  • 理解2:可能是指传递,也可能是引用传递(地址值)

var a = 3;
function fn(a) {
    a = a + 1;
}
fn(a);
console.log("a为:", a);// 3

在这里插入图片描述

在这里就可以理解为是值(基本)传递


var obj = { name: "心猿" };//声明一个对象
function fn(obj) {
    console.log(obj.name);
}
fn(obj);//“心猿”
//这里可以理解为地址值传递,也可以理解为引用传递(地址值)

在这里插入图片描述

函数的调用

直接调用:

函数名()


function fn(obj) {
    console.log("我是直接被调用的!");
}
fn()//直接调用

在这里插入图片描述

通过对象调用

obj.函数名()


Obj = {
    fun(){
        console.log("我是通过对象调用的!");
    }
}
Obj.fun();//通过对象调用函数

在这里插入图片描述

new调用

new fun()


function fun() {
    console.log("我是通过new调用的!");
    return 1 + 2;//返回一个值
}
var result = new fun();
console.log("result:", result);//fun {}
console.log("result的数据类型:",typeof result);//"object"

在这里插入图片描述

注意:

1、用new调用的函数,得到的永远是一个对象,不管函数有没有返回值

2、使用new调用函数,这个函数就是一个用来创建对象的函数(构造函数)

fun.call/apply(obj)调用

这个是临时让fun成为obj的方法进行调用


var obj = { name: "心猿" };//声明一个对象
function fun() {
    this.age = 5000;
    console.log("通过fun.call(obj)调用函数!");
}
//不能直接通过obj.fun()调用,但是可以通过fun.call(obj)进行调用
fun.call(obj)//相当于obj.fun
//打印通过fun.call(obj)调用函数!
console.log("还可以当做obj的方法调用age的信息  "+"age:",obj.age);//5000

在这里插入图片描述

函数的返回值

函数可以有返回值,也可以没有返回值。

  • 有返回值的函数:函数体中通过return语法返回一个值,这个决定程序下一步操作
  • 无返回值的函数:函数只实现某种功能,不需要返回值(函数体中没有return语句)
  • 返回值可以是任意数据类型,可以是基本数据类型,也可以是对象和函数。

立即执行函数

函数定义完,立即被调用,这种函数叫做立即执行函数

立即执行函数往往只会执行一次。

语法:


(function(){
	代码块;
})();

例如:


(function (a, b) {
    console.log("num:", a + b);
})(1,3);//4

在这里插入图片描述

方法

  • 对象中属性可以是一个函数
  • 如果一个函数作为一个对象的属性保存。那么我们称这个函数是这个对象的方法
  • 调用这个函数就是调用对象的方法(method),本质上和函数没有区别

var obj = new Object()
{
    obj.name = "心猿";
    obj.age = 3000;
    obj.sayName = function(){
        console.log("name:",obj.name);
    }
}
obj.sayName();

在这里插入图片描述

另一种写法:


var obj = {
    name: "意马",
    age: 3000,
    sayName: function () {
        console.log("name:", obj.name);
    }
}
obj.sayName();

在这里插入图片描述

枚举对象中的属性:

可以看我这篇的不同方法遍历的区别:比较JavaScript中for、forEach、for…in、for…of的区别

使用for...in语句

语法


for(var index in arr)
{
    console.log(index);//代码块
}

for ...in语句 对象有几个属性,循环体就会执行几次,每次执行时,会将对象中的一个属性的名字赋值给变量

在这里插入图片描述


var person = {
    name:"孙悟空",
    age:5777,
    gender:"男"
};
for(var index in person)
{
    console.log(person[index]);
}

作用域

作用域指一个变量的作用范围

在JavaScript中一共两种作用域:

1.全局作用域(全局变量)

2.函数作用域(局部变量)

3.块级作用域es6语法

全局作用域

  • 在函数外部定义的变量或在函数内部没有使用var声明的变量。
  • 全局作用域在浏览器页面打开时创建,在页面关闭是销毁
  • 在全局作用域中有一个全局对象window
  • 它代表的是一个浏览器的窗口
  • 它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用
  • 如果在node.js环境下使用这个全局对象window会报错,需要在浏览器中才会有显示结果。
  • 在全局作用域中:
    • 创建的变量都会作为window对象的属性保存
    • 创建的函数都会作为window对象的方法保存
  • 全局作用域中的变量都是全局变量
  • 在页面任意的部分都可以访问的到

变量作为window对象的属性保存


var  a = 10;
console.log("a:",a);
console.log("window.a:",window.a);

因为环境的原因在node.js下会报错

在这里插入图片描述

在浏览器中会正常显示

在这里插入图片描述

函数都会作为window对象的方法


function fun(){
   console.log("我是window.fun函数!")
}
window.fun();

在这里插入图片描述

函数作用域

  • 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
  • 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
  • 在函数作用域中可以访问到全局作用域的变量
  • 当函数作用域操作一个变量时,会现在自身作用域中寻找,如果有就直接使用,如果全局作用域中依然没有找到,则会报错ReferennceError
  • 在函数中要访问全局变量可以使用window对象

块级作用域

ES6(ECMAScript 2016)使用let声明的变量,作用范围在语句块中


for(let i=0;i<100;i++){
			}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 详解JavaScript的函数简介

本文链接: https://lsjlt.com/news/157549.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解JavaScript的函数简介
    目录函数简介函数function创建函数构造函数创建函数函数声明创建函数函数表达式创建函数函数的参数形参(形式参数):实参(实际参数):函数的调用通过对象调用new调用函数的返回值立...
    99+
    2024-04-02
  • JavaScript函数的详细介绍
    本篇内容主要讲解“JavaScript函数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript函数的详细介绍”吧!一、函数语法一个Jav...
    99+
    2024-04-02
  • JavaScript的function函数详细介绍
    通过函数来封装任意多条语句,而且可以在任何地方、任何时间调用执行。 而我们的JavaScript脚本语言比较特殊,相对于C语言,它的参数是不需要数据类型加持的。返回值return,...
    99+
    2024-04-02
  • Python高阶函数map()简介和使用详解
    目录简介:示例:示例(1):输出map()函数返回值(迭代器)结果示例(2):与循环对比示例(3):字符串转列表示例(4):元组转列表示例(5):提取字典的键key,通过函数作用放入...
    99+
    2023-03-03
    Python 高阶函数map使用 Python map函数
  • javascript中全局函数的详细介绍
    本篇内容主要讲解“javascript中全局函数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript中全局函数的详细介绍”吧! ...
    99+
    2024-04-02
  • JavaScript的简介
    这篇文章主要讲解了“JavaScript的简介”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript的简介”吧!JavaScript是一种基于对...
    99+
    2024-04-02
  • Python pandas中apply函数简介以及用法详解
    目录1.基本信息2.语法结构3.使用案例3.1 DataFrame使用apply3.2 Series使用apply3.3 其他案例4.总结参考链接:1.基本信息 ​ Pandas 的...
    99+
    2024-04-02
  • PHP转化函数简介及使用方法详解
    【PHP转化函数简介及使用方法详解】PHP 作为一种广泛应用于 Web 开发领域的编程语言,其中的转化函数在数据处理过程中发挥着重要作用。转化函数能够帮助开发者将不同类型的数据进行转换...
    99+
    2024-03-07
    函数 php 转化 lsp
  • JavaScript函数介绍:5分钟了解JavaScript
    什么是函数把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用。函数的作用就是封装一段代码,将来可以重复使用。推荐了解黑马程序员web前端课程。为什么要使用函数为了解决代码的...
    99+
    2023-06-03
  • Javascript中的async函数详解
    前言:async 是“异步”的简写,async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成,await 只能出现在...
    99+
    2024-04-02
  • 详解JavaScript中的replace()函数
    JavaScript中的replace()函数是用于替换字符串中的某个子串的方法。该方法接受两个参数:要替换的子串和替换后的字符串。...
    99+
    2023-09-09
    java
  • JavaScript 中的 parseInt() 函数详解
    目录参数描述总结parseInt() 函数可解析一个字符串,并返回一个整数。 parseInt 可以接受 2 个函数。 parseInt(string, radix)&nb...
    99+
    2023-05-19
    js parseInt() 函数 js parseInt()
  • JavaScript函数的使用详解
    目录1. 声明函数2. 调用函数3. 函数的参数4. 函数的返回值5. arguments的使用6. 函数可以调用另外一个函数7. 函数的两种声明方式总结1. 声明函数2. 调用函数...
    99+
    2024-04-02
  • C++中的atoi 函数简介
    目录一.atoi 函数二.atoi 函数函数实战 一.atoi 函数 在 stdlib.h 中 atoi 函数,可用于将 char 字符串转为 int 整数类型, 语法如下: ...
    99+
    2024-04-02
  • Javascript DOM的简介,节点和获取元素详解
    目录DOM节点元素节点:文本节点:属性节点:获取元素getElementById()getElementsByTagName()getElementsByClassName()总结:...
    99+
    2024-04-02
  • 浅谈JavaScript数组简介
    目录数组简介数组字面量二维数组总结数组简介 数组(Array) - 数组也是一个对象 它和我们普通对象功能类似,也是用来储存一些值的 不同的是普通对象是使用字符串作为属性值的,而...
    99+
    2024-04-02
  • JavaScript函数语法详解
    目录一、普通函数二、箭头函数三·、数据包 JSON四、对象Object五、Promise六、Async : Await七、包总结一、普通函数 js的函数创建比较特殊,有很多种方式,最...
    99+
    2024-04-02
  • SQL 窗口函数简介
    目录一、什么是窗口函数二、窗口函数的语法2.1 能够作为窗口函数使用的函数三、语法的基本使用方法——使用 RANK 函数四、无需指定 PARTITION BY五、专用窗口函数的种类六、窗口函数的适用范围七、作为窗口函数使用的聚合函数八、计...
    99+
    2014-09-29
    SQL 窗口函数简介
  • sprintf()函数简要介绍
    `sprintf()`是一个C语言中的函数,用于将指定格式的数据写入字符串中。它的原型如下:```cint sprintf(char...
    99+
    2023-09-13
    sprintf()
  • Python logging简介详解
    目录一、日志级别1.级别定义2.简单示例3.指定级别二、基本概念1.Logger2.Handler3.Formatter三、示例1.日志输出至控制台2.日志输出至文件四、默认Logg...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作