javascript - 关于变量的问题
大家讲道理
大家讲道理 2017-04-11 11:53:39
[JavaScript讨论组]

代码如下

        var a=1;
        function cc(){
            a=2;
            return a;
            function a(){}这个地方是什么意思有什么意义
        }
        cc();
        console.log(a);为什么会输出1
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
黄舟

这主要是基础知识的应用了。JavaScript对于作用域(Scope)和上下文(Context)的实现是这门语言的一个非常独到的地方,函数可以接收不同的的上下文和作用域。

几个知识点:

  1. 函数体内部,局部变量的优先级比同名的全局变量高。

  2. 函数中声明的变量在整个函数中都有定义。

  3. 函数声明提升,且函数声明提升优于变量声明提升。

JavaScript 解释器“前瞻性”查找所有变量定义,把它们“提升”到函数顶部。所以上面的代码可等价于:

var a;
a = 1;
function cc(){
    var a // 这个a是函数声明的提升,优先变量的。所以cc中的a变为局部变量。
    a=2;
    a = function (){}  // 这个函数本来写在retun 后面,但是声明是有效的。
    return a;
}
cc(); // 返回一个在cc中的空函数
console.log(a);// 等于当前作用域的a=1
天蓬老师

函数声明,变量声明,函数参数都可以声明一个变量在当前作用域。所以你在函数内声明了一个函数a,相当于声明了变量,所以内部对a的操作不会影响外部的a

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号