前端 - JavaScript:请问同时声明多个变量的原理是什么?var a,b,c;
伊谢尔伦
伊谢尔伦 2017-04-10 15:51:00
[JavaScript讨论组]

函数一:

<script>
    function show(){
        var a=b=c=d=5;
    }
    show();
    alert(a);//弹a时报错(not defined),而b、c、d都能弹出5
</script>

函数二:

<script>
    function show(){
        var a=5,b=6,c=7;
    }
    show();
    alert(c);//弹出a、b、c全都报错
</script>

**请问一下,为什么在函数一中,只有变量a被声明了;为什么在函数二中,变量a、b、c都都被声明了?难道是var的“声明范围”是与它最近的变量?
谢谢!**

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
阿神
  1. 为什么在函数一中,只有变量a被声明?
    因为赋值是从右向左结合:
    var a=b=c=d=5; 等价于 var a=(b=(c=(d=5)));,其中只有a被声明了,b,c和d都是自动解析为全局变量了。

  2. 为什么在函数二中,变量a、b、c都都被声明了?
    语法就这样规定的:

概述
变量声明语句,声明一个变量并且可以同时初始化该变量。

语法
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
varnameN 变量名。变量名可以定义为任何合法标识符。 valueN 变量的初始化值。该值可以为任何合法表达式。

描述
变量声明无论出现在代码的任何位置,都会在任何代码执行之前处理。使用var语句声明的变量的作用域是当前执行>位置的上下文:一个函数的内部(声明在函数内)或者全局(声明在函数外)。
....

参考:

  1. Assignment operators

  2. 运算符优先级

  3. var - JavaScript

巴扎黑

补充 a 称为 函数show的局部变量
你在函数外是弹不出来的啦

PHP中文网

简化上面的答案就是

    <script>
        function show(){
            var a=b=c=d=5;
        }
        show();
        alert(a);//弹a时报错(not defined),而b、c、d都能弹出5
    </script>

等同于
var a=5;
b=5;
c=5;
d=5;
a为局部变量,b,c,d为全局变量

迷茫

简单来说就是变量作用域的问题。上面都详细说了。 为什么呢?JS就是这样定的啦

伊谢尔伦

变量作用域,第一个是声明了a为局部变量,b,c,d全局变量,alert函数是绑定在window上的为全局函数,所以取不到a;第二个声明的全是局部变量,所以全部取不到。

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

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