扫码关注官方订阅号
函数一:
函数二:
**请问一下,为什么在函数一中,只有变量a被声明了;为什么在函数二中,变量a、b、c都都被声明了?难道是var的“声明范围”是与它最近的变量?谢谢!**
小伙看你根骨奇佳,潜力无限,来学PHP伐。
为什么在函数一中,只有变量a被声明?因为赋值是从右向左结合:var a=b=c=d=5; 等价于 var a=(b=(c=(d=5)));,其中只有a被声明了,b,c和d都是自动解析为全局变量了。
var a=b=c=d=5;
var a=(b=(c=(d=5)));
为什么在函数二中,变量a、b、c都都被声明了?语法就这样规定的:
概述变量声明语句,声明一个变量并且可以同时初始化该变量。 语法var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];varnameN 变量名。变量名可以定义为任何合法标识符。 valueN 变量的初始化值。该值可以为任何合法表达式。 描述变量声明无论出现在代码的任何位置,都会在任何代码执行之前处理。使用var语句声明的变量的作用域是当前执行>位置的上下文:一个函数的内部(声明在函数内)或者全局(声明在函数外)。....
概述变量声明语句,声明一个变量并且可以同时初始化该变量。
语法var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];varnameN 变量名。变量名可以定义为任何合法标识符。 valueN 变量的初始化值。该值可以为任何合法表达式。
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
描述变量声明无论出现在代码的任何位置,都会在任何代码执行之前处理。使用var语句声明的变量的作用域是当前执行>位置的上下文:一个函数的内部(声明在函数内)或者全局(声明在函数外)。....
参考:
Assignment operators
运算符优先级
var - JavaScript
补充 a 称为 函数show的局部变量 你在函数外是弹不出来的啦
简化上面的答案就是
<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;第二个声明的全是局部变量,所以全部取不到。
a
b,c,d
alert
window
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
为什么在函数一中,只有变量a被声明?
因为赋值是从右向左结合:
var a=b=c=d=5;等价于var a=(b=(c=(d=5)));,其中只有a被声明了,b,c和d都是自动解析为全局变量了。为什么在函数二中,变量a、b、c都都被声明了?
语法就这样规定的:
参考:
Assignment operators
运算符优先级
var - JavaScript
补充 a 称为 函数show的局部变量
你在函数外是弹不出来的啦
简化上面的答案就是
等同于
var a=5;
b=5;
c=5;
d=5;
a为局部变量,b,c,d为全局变量
简单来说就是变量作用域的问题。上面都详细说了。 为什么呢?JS就是这样定的啦
变量作用域,第一个是声明了
a为局部变量,b,c,d全局变量,alert函数是绑定在window上的为全局函数,所以取不到a;第二个声明的全是局部变量,所以全部取不到。