首页 > 其他分享 >var b = 10; (function b() {b = 20; console.log(b); })();会打印什么你了解吗?

var b = 10; (function b() {b = 20; console.log(b); })();会打印什么你了解吗?

时间:2023-04-01 14:23:04浏览次数:40  
标签:function 10 20 函数 foo 声明 表达式

要知道打印什么需要具备2个知识点
  一、函数声明和函数表达式的区别
  二、匿名函数与具名函数的区别

首先来说说第一点:

要区分函数声明和函数表达式,只需要知道function是不是声明中的第一个词,如果是,那就是函数声明,否则就是函数表达式;

函数声明和函数表达式之间最重要的区别是他们的名称标识符将会绑定在何处;
举个例子
  函数声明:
  function foo(){},foo 被绑定在所在作用域中,可以直接通过foo() 来调用它;
  函数表达式:
  (function foo(){})
  foo被绑定在函数表达式自身的函数中,外部作用域无法访问foo;

第二个知识点匿名函数与具名函数的区别
函数表达式可以是匿名,写成这样(function(){})是合法的;函数声明则不可以省略函数名;
具名函数有几个好处:
  a、在栈追踪中可以显示出有意义的函数名,调试方便;
  b、可以在函数内引用自身
  c、代码更具有可读性、可理解性;

具备以上两个知识点,就可以很好的分析会打印出什么了
  var b = 10;
  (function b() {
       // 会在这作用域内声明常量b,引用函数自身
    b = 20;
    console.log(b);
  })();

在立即执行函数表达式自调用后,会在自己的函数执行上下文中收集到一个和函数同名的b常量(表达式函数的标识符不可修改),常量的值为引用函数体自身;
接下来b = 20 是指向function b,由于自身特性不能改变b的引用,所以无效;
最后输出b函数;

 

 

 

标签:function,10,20,函数,foo,声明,表达式
From: https://www.cnblogs.com/heyujun-/p/17278553.html

相关文章

  • 企业实践 | 如何在阿里云裸金属服务器上使用UEFI模式实践安装国产银河麒麟V10操作系统
    [点击......
  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)(CF1810)A~D题题解
    今天采用的是新格式。CF1810ABeautifulSequence点击查看原题点击查看思路如果一个数字的值\(v\),不大于当前的位置\(p\),那我们可以通过删除\(p-v\)个数字,使它们两个对应上。比如\([1,7,2,5,3]\)中的\(3\),其数值为\(3\),位置为\(5\),数值\(3\)小于等于\(......
  • PAT Basic 1060. 爱丁顿数
    PATBasic1060.爱丁顿数1.题目描述:英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”\(E\),即满足有\(E\)天骑车超过\(E\)英里的最大整数\(E\)。据说爱丁顿自己的\(E\)等于87。现给定某人\(N\)天的骑车距离,请你算出对应的爱丁......
  • Microsoft office 2021功能特性介绍及安装教程Office 2021中文版最新(激活)正式下载
    Microsoftoffice2021简体中文版是一款非常受人欢迎的办公软件,包含了Word、Excel、PowerPoint、OneNote、Lync、Publisher和Access等等多款组件,支持独立打开使用,满足用户的所有使用需求,大为改善的操作界面,能够自动创建书签,内置图像搜索功能,Excel快速分析,Office2021对操作界面......
  • macos:用homebrew安装node/安装vue-cli( node v18.15.0/ Homebrew 4.0.10-119)
    一,用brew安装nodeliuhongdi@liuhongdideMacBook-ProHomebrew%brewinstallnode@18==>Downloadinghttps://formulae.brew.sh/api/formula.jws.json#=#=#==>Fetchingnode......
  • homebrew:常用命令(Homebrew 4.0.10-119)
    一,brew常用的命令1,查看brew下载文件的缓存目录liuhongdi@liuhongdideMacBook-ProHomebrew%brew--cache/Users/liuhongdi/Library/Caches/Homebrew2,查看brew的安装目录liuhongdi@liuhongdideMacBook-ProHomebrew%brew--prefix/usr/local也可以:liuhongd......
  • day10| 225.用队列实现栈;232.用栈实现队列
    题目简述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop和empty)。实现MyStack类:voidpush(intx)将元素x压入栈顶。intpop()移除并返回栈顶元素。inttop()返回栈顶元素。booleanempty()如果栈是空的,返回true;否则,返回......
  • Microsoft Visual Studio 2022 透明背景设置
    目录1.微软扩展官网2.待安装的扩展包3.如何安装扩展包?4.DarkTransparency主题设置(透明区域增加)5.ClaudiaIDE具体参数设置6.背景图片的显示和隐藏1.微软扩展官网微软扩展官网:—>VisualStudioMarketplace2.待安装的扩展包序号扩展包(vsix包)官方说明1C......
  • homebrew: 配置国内源(Homebrew 4.0.10-119)
    一,查看brew的安装目录:liuhongdi@liuhongdideMacBook-Propoem%cd"$(brew--repo)"liuhongdi@liuhongdideMacBook-ProHomebrew%pwd/usr/local/Homebrew说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest     对应的源......
  • 【专题】2022年中国企业ESG战略与实践白皮书报告PDF合集分享(附原数据表)
    当前,随着气候变化、新冠疫情和地缘政治等重大突发事件的冲击,公司所处的宏观环境面临着越来越多的不确定性。在中国,伴随着“双碳”目标的实施和“共同富裕”的实施,我国的经济增长方式正在转向一种新的、同时也是一种生态与福利并重的增长方式。在这种情况下,ESG成为了许多公司关注的......