IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript中的立即执行函数 -> 正文阅读

[JavaScript知识库]JavaScript中的立即执行函数

JavaScript中的立即执行函数

立即调用函数表达式(IIFE)是一个在定义时就会立即执行的 JavaScript 函数。

关于 IIFE (Immediately Invoked Function Expression 立即调用函数表达式)可见IIFE(立即调用函数表达式) - 术语表 | MDN

在一般情况下,函数必须先调用才能执行,例如:

function fn(){

??? console.log("hello");

}

fn(); //调用

如果不调用的话,不会自动执行显示结果。

所谓立即执行函数,就是不需要调用,立马就能执行的函数。

立即执行函数的写法:

(function(){})()

【也可以写为 (function(){}())】

立即执行函数中后面的小括号就相当于调用函数,可以给立即执行函数传参数,将我们要传递的参数写在后面的()里面,作为实参。例如:

(function fn(a,b){

??? console.log('a+b='+(a+b));

?})(1,2)

(function fn(a,b){

??? console.log('a+b='+(a+b));

?}(1,2))

如果有多个立即执行函数,他们之间需要逗号分隔,否则会报错。同时,在立即执行函数里面,也可以采用匿名函数的形式书写。

普通函数中的变量不能从外部访问,但普通函数内部可以访问外部的变量,在这点上,立即执行的函数和普通函数类似,立即执行的函数中的变量不能从外部访问,但立即执行函数内部可以访问外部的变量。下面给出具体示例:

在一个函数(function)中定义的变量不能从这个函数外部的任何地方访问,因为这个变量的作用域仅在这个函数的内部。

function numbers() {

? var num1 = 2, num2 = 3;

? return num1 + num2;

}

numbers (); //5

console.log(num1); //Uncaught ReferenceError num1 is not defined

一个函数可用使用在它所被定义的作用域中的所有变量【换句话说,当一个函数被定义在全局作用域的时候,它可以访问所有在全局作用域中定义的变量】。

var num1 = 2, num2 = 3;

function numbers() {

? return num1 + num2;

}

numbers(); //5

console.log(num1); //2

立即执行函数在这点上 和普通函数(function)类似

立即执行的函数中的变量不能从外部访问。

(function() {

? var num1 = 2, num2 = 3;

? return num1 + num2;

})(); //5

console.log(num1); // /Uncaught ReferenceError num1 is not defined

立即执行的函数可用使用在它所被定义的作用域中的所有变量。

var num1 = 2, num2 = 3;

(function() {

? return num1 + num2;

})(); //5

console.log(num1); //2

下面给出一个在HTML文件中使用立即执行函数的的例子,源码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>立即执行函数示例</title>
<style>
           li{
               list-style: none;
          }
          button{
               width:40px;
               height: 20px;
                  
           }
</style>
</head>
<body>
<ul>
       <li><button>0</button></li>
       <li><button>1</button></li>
       <li><button>2</button></li>
       <li><button>3</button></li>
       <li><button>4</button></li>
       <li><button>5</button></li>
</ul>
你单击的是: <input type="text" id="field" readonly="true">
<script>
var liList = document.getElementsByTagName('li')
for(var i=0; i<6; i++){
     //下面是一个立即执行函数
     (function(j){
            liList[j].onclick = function(){
                document.getElementById("field").value=j; // 0、1、2、3、4、5
            }
     })(i)
}
</script>
</body>
</html>

保存文件名为:在HTML中使用立即执行函数的例子.html

运行效果:

?

附录

ReferenceError: "x" is not definedReferenceError: "x" is not defined - JavaScript | MDN

Function(函数)Function(函数) - 术语表 | MDN

函数函数 - JavaScript | MDN

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 01:52:39  更:2022-01-14 01:53:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:41:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码