码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • js的小题


    1. (function () {
    2. var a = (b = 3);
    3. })();
    4. console.log(b);
    5. console.log(a);

    请问执行结果是什么?

    b:3 
    报错:VM103723:10 Uncaught ReferenceError: a is not defined
        at :10:13

    为什么a打印不出来?报错了?

    回答:

    这是因为在JavaScript中,括号内的内容被视为表达式,而不是函数声明语句。因此,在括号中使用匿名函数表达式是合法的,不需要使用函数名称来标识该函数。

    在你提供的示例中, (function () {})表示的是一个立即执行的匿名函数表达式,它将包含的代码作为整体进行评估,并在执行后自动销毁。这种技术可以用来创建局部作用域、避免全局变量污染等。

    在括号内定义变量b,没有使用var或let修饰符将其声明为局部变量,这会导致它变成了一个全局变量。因此,a被定义为3,而b也被定义为3,并成为一个全局变量。但是,这种写法不够清晰,并且容易引起混淆,因此应该谨慎使用。

    总之,在JavaScript中,有两种类型的函数:函数表达式和函数声明。函数表达式可以是具名或匿名的,而函数声明必须具有名称。在JavaScript中,使用括号可以将函数声明强制转化为函数表达式,从而使它们成为有效的语句

    在你提供的代码示例中,(function () { var a = (b = 3); })(); 创建了一个立即执行的匿名函数表达式。其中,var a = (b = 3); 定义了变量 a 和全局变量 b ,并将其赋值为 3。注意,由于缺少变量声明关键字(如 var 或 let),b 实际上成为了全局变量。

    然而,当你尝试通过 console.log(b); 和 console.log(a); 分别输出变量 b 和 a 的值时,会出现以下结果:

     
    

    3 ReferenceError: a is not defined

    这是因为:

    1. b 是一个全局变量,因此它可以在任何地方访问到。所以 console.log(b); 输出的是全局变量 b 的值 3。
    2. a 是在匿名函数内部声明的局部变量,它的作用范围仅限于该函数内部。因此,当你尝试在函数外部访问它时,会引发 ReferenceError 错误,表示 a 未定义。

    请注意,在使用立即执行的匿名函数表达式时,应该避免出现不必要的全局变量,以及确保变量的作用范围符合预期

  • 相关阅读:
    Clog——基于C语言的日志系统设计
    FlashAttention2原理解析以及面向AIGC的加速实践
    【算法】【递归与动态规划模块】字符串之间转换的最小代价
    【电源专题】什么是开关稳压器
    【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问
    MySQL 索引测试
    详解GaussDB(DWS)中的行执行引擎
    Java中ExecutorService线程的Callable的future.get()方法堵塞当前线程解决方法
    你认为没必要做CC防护吗?还觉得不会被攻击就你就错了
    错误记录2022.11.22
  • 原文地址:https://blog.csdn.net/kuang_nu/article/details/133859629
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号