前几天刷题看到有个题目是这样的

问:打印的结果是什么?
答:

认识一下立即执行函数

立即执行函数,就是不需要被调用,立即能自己执行的函数。

语法格式:

第一种::(function () {} ());
第二种:(function () {}) ();

理解一下:

  • 最外面有个小括号③包起来
  • function () {} 也就是上图中的①是一个函数
  • 函数后面小括号()②可以理解成调用函数(②在③里面,就是第一种格式的立即执行函数;在外面就是第二种格式)

立即执行函数也可以传参:

(function (a) { // 形参console.log(a);  // 打印结果为  1})(1)  // 实参

分析问题

题目在这里:

一步步分析 ——  第一步:

(function foo () {foo = 100;console.log(foo);
}())

在非严格模式下,未声明变量赋值的行为是允许的(想知道为什么被允许,自己百度一下吧);
函数是立即执行函数,所以无需调用并立即输入结果,foo是一个方法名,函数内又被定义成了局部变量,二者冲突,以为你要返回的是foo这个函数,所以会把函数返回给你。

第二步:拿走函数还剩下的是

var foo = 1;
console.log(foo);

此处的foo在函数外部,是一个全局变量,所以log打印的结果是1
按照执行的顺序所以先打印的是函数,然后是1

举一反一(不反三了)

(function () {foo = 100;console.log(foo);
}())

立即执行函数创建了一个独立的作用域,里面的变量都是局部变量。避免了命名冲突问题。
综上所述,上面的log打印的结果是 100

温馨提示:
养成良好的代码规范很重要,平时还是要声明变量再赋值 and 同一个函数中,函数名和方法名不要重复~~

var foo = 1; (function foo() { foo = 100; console.log(foo); }()) console.log(foo);相关推荐

  1. 背景图片全屏适应的两种方法,background-size: cover; 或者(background-size: 100% 100%;)

    background: #000 url(img1.jpg) no-repeat fixed center center;background-size: cover; 或者(background-s ...

  2. 孟欣 - js赋值顺序/var a = {n: 1} var b = a; a.x = a = {n: 2} console.log(a.x); console.log(b.x)

    赋值顺序 以下为网上一个非常经典的面试题: var a = {n: 1}   var b = a;   a.x = a = {n: 2}   console.log(a.x);   console.l ...

  3. 【产业互联网周报】微软官宣把聊天机器人植入Office;任正非:4月份华为自研MetaERP将面世;...

     关注ITValue,看企业级最新鲜.最价值报道! ChatGPT之父:监管机构应参与技术测试,减少AI对人类的威胁:李开复宣布亲自组建中国版ChatGPT公司,资金.算力将陆续到位:金蝶2022年亏 ...

  4. 输入框限制只能输入数字,正数、负数、0,最多两位小数;数字输入框可以输入负数,并最多保留两位小数;el-number-input去掉四舍五入和自动补齐小数;

    场景: –要求1:输入框只能输入数字,可以使正数.负数.0,小数点最多保留两位. –要求2:不需要自动补齐小数点,也不需要自动四舍五入. element-ui的数字输入框el-input-number ...

  5. 互联网快讯:知乎登陆港交所;极米Z6X Pro、极米H3S超强性能获肯定;华为将发布新款折叠屏手机

    国内要闻 苹果宣布与中国绿色碳汇基金会合作,并在成都市开展试点项目: 知乎正式登陆港交所:上市首日破发收跌23.58%,总市值79.89亿港元: 世界地球日:全国超3000万人种成"保护黄河 ...

  6. MySQL期末考试题目 题目1:查询employee数据表中的第5—8行的数据;题目2:查询每个部门的员工人数以及平均工资;题目3:查询‘孙威’的基本信息,包括员工编号、所在部门名称、岗位等级以及基本

    上篇博客记录了我在mysql考试时遇到的报错,错过了考试时间[我不知道考试时间只有20分钟] 关于第二题,第三题,哪位大佬可以有点再简单的操作方法ma,或者其他方法,想学习学习,欢迎各位大佬指点指点! ...

  7. 6、春节到了,小明期盼收到压岁钱。他想:如果收到的钱超过1000元,那么捐助失学儿童;收到的钱在500~1000之间,那么购买航模;如果收到的钱不足500元,那么购买百科全书。

    import java.util.Scanner; public class Zuoye1 { /** 春节到了,小明期盼收到压岁钱.他想: 如果收到的钱超过1000元,那么捐助失学儿童: 收到的钱在 ...

  8. 爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,则最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。参考例

    爱因斯坦曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶:若每步跨3阶,最后剩下2阶:若每步跨5阶,最后剩下4阶:若每步跨6阶,则最后剩下5阶:只有每步跨7阶,最后才正好1阶不剩.参考例 ...

  9. Ubuntu18.04下安装NVIDIA显卡驱动、docker、nvidia-docker;容器中编译安装opencv-4.4.0与darknet-yolov4并完成测试;容器封装镜像转移。2022

    记录一下第一次在CSDN发博客,欢迎大家光临~ 文章目录 前言 一.宿主机配置 1.安装Ubunntu18.04 64位系统 2.为宿主机系统更换国内软件源Ubuntu 官方源服务器在欧洲,国内访问很 ...

  10. 写几个函数: ①输入10个职工的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整; ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。

    写几个函数: ①输入10个职工的姓名和职工号: ②按职工号由小到大顺序排序,姓名顺序也随之调整: ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名. #i ...

最新文章

  1. Android中图片的目录
  2. 风云编程python-Python中*args 和**kwargs的用法
  3. 【awk】用awk将Fasta文件序列变成一行
  4. neo4j cypher_Neo4j:Cypher – Neo.ClientError.Statement.TypeError:不知道如何添加Double和String...
  5. 英语----情态动词(下)
  6. 软件静态架构 软件组件图_组件图| 软件工程
  7. python docker库
  8. 减法运算的借位标志cf_数学|有理数运算法则及题型汇总
  9. html5 audio 资源,HTML5 Audio(音频)
  10. 最新浅析java源代码转换为机器码的编译执行过程
  11. 微信小程序短信倒计时60s功能
  12. 电气火灾的危害及预防
  13. 2018.1.23日记
  14. A12 屏幕旋转流程
  15. Unable to initialize EGL
  16. android吉他谱组件,Android - 自定义View 实现 文本吉他谱的 动态控制 实现
  17. PIA (Primary Interop Assembly) AIA (Alternate Interop Assembly)简介
  18. 首个AI数字人唱作歌曲刷屏背后:百度APP数字人度晓晓用AI陪伴亿万用户
  19. 谷歌浏览器拓展及脚本安装入门简介
  20. GFS(分布式文件系统)

热门文章

  1. 2022美赛D题题目及思路--数据瘫痪
  2. java 9宫格抽奖_九宫格抽奖
  3. 安装计算机一级出现appcrash,问题事件名称: APPCRASH 终于解决了。
  4. Python3读取h5,pkl,npz,npy格式的文件
  5. 深度Linux修改分辨率6,Deepin 修改自定义分辨率
  6. HTML——简单的网站首页
  7. 测试一下Pinia,Vuex 要出局了?
  8. linux中的批量删除和查找
  9. IDEA中修改Maven的项目名称
  10. 计算年龄:sql计算