javascript - JS 函数和 IIFE
问题描述
当我运行以下 JS 代码时:
var x = (function () {
console.log('Hello x!');
});
var y = function () {
console.log('Hello y!');
};
var z = (function () {
console.log('Hello z!')
return 2;
})();
x();
y();
以下输出打印在浏览器的控制台上:
你好z!
你好×!
你好!
为什么“ Hello z! ”打印在“ Hello x!”之前 &“你好! ”。立即调用函数表达式 (IIFE) 如何与“z”变量交互?
PS:我是初学者。
解决方案
因为这是 IIFE:
var z = (function () {
console.log('Hello z!')
return 2;
})();
如果没有 IIFE,上面的代码可以重写为:
var x = (function () {
console.log('Hello x!');
});
var y = function () {
console.log('Hello y!');
};
var z = function () {
console.log('Hello z!')
return 2;
};
z();
x();
y();
这就是为什么首先打印“Hello z”的原因
推荐阅读
- azure-data-factory - 如何使用 Azure 数据工厂在雪花表中实现 scd2
- html - 选择选项下拉菜单不完全可见
- python - 检查字符串中的索引是否是某个字母
- python - 无法从 Debian 虚拟环境中的“pip._vendor”导入名称“六”
- c - 显示选项卡结构编程 C
- java - 如何在 Spring Boot 中使用自定义解析器启用 Thymeleaf 自动重新加载?
- java - 循环倒计时
- tomcat - 无法在 APACHE 9.0 Windows 中为子级添加星标
- python - 如何通过 python 获取请求使用存储在文本文件中的谷歌浏览器 cookie?
- ios - iOS 中的项目分析-Leaks 显示 2 个泄漏“Responsible caller -bsxpcserviceconnectionEventHandler”